在Linux系统中,Swagger(通常指的是OpenAPI规范及其实现,如Swagger UI和Swagger Editor)本身不直接提供日志记录功能,但你可以通过以下几种方法来实现Swagger的日志记录:
docker logs swagger_container_name
tail -f /var/log/nginx/access.log
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const swaggerDocument = require('./swagger.json');
const app = express();
// 中间件:记录请求日志
app.use((req, res, next) => {
console.log(`Request: ${req.method} ${req.url}`);
next();
});
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
from flask import Flask, request
from flasgger import Swagger
import logging
app = Flask(__name__)
swagger = Swagger(app)
# 中间件:记录请求日志
@app.before_request
def log_request_info():
app.logger.info('Request: %s %s', request.method, request.url)
@app.route('/api-docs')
def swagger_ui():
return swagger.ui
if __name__ == '__main__':
app.run(debug=True)
/etc/logrotate.d/swagger
:/var/log/swagger/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 644 root root
sharedscripts
postrotate
/usr/bin/systemctl reload your-service.service > /dev/null
endscript
}
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/swagger/*.log
fields:
app: swagger
env: production
output.logstash:
hosts: ["logstash-server:5044"]
input {
beats {
port => 5044
}
}
filter {
if [fields][app] == "swagger" {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} [%{DATA:thread}] %{LOGLEVEL:loglevel} %{DATA:logger} - %{GREEDYDATA:message}" }
}
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "swagger-logs-%{+YYYY.MM.dd}"
}
}
/usr/local/bin/clean-swagger-logs.sh
:#!/bin/bash
find /var/log/swagger-editor/ -mtime 7 | xargs rm -rf
sudo chmod +x /usr/local/bin/clean-swagger-logs.sh
crontab -e
# 添加以下行以每天清理日志
0 0 * * * /usr/local/bin/clean-swagger-logs.sh
通过以上方法,你可以在Linux系统上有效地记录和管理Swagger相关的日志,确保系统的稳定运行和问题的快速排查。