在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相關的日志,確保系統的穩定運行和問題的快速排查。