溫馨提示×

Linux系統Swagger如何進行日志記錄

小樊
44
2025-07-21 05:57:56
欄目: 智能運維

在Linux系統中,Swagger(通常指的是OpenAPI規范及其實現,如Swagger UI和Swagger Editor)本身不直接提供日志記錄功能,但你可以通過以下幾種方法來實現Swagger的日志記錄:

使用Swagger UI內置日志

  • 查看Swagger UI容器日志(如果使用Docker部署):
    docker logs swagger_container_name
    
  • 查看Nginx/Apache訪問日志(如果通過Web服務器代理):
    tail -f /var/log/nginx/access.log
    

集成日志庫

  • Node.js (Express + Swagger UI Express)
    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');
    });
    
  • Python (Flask + Flask-Swagger)
    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)
    

使用Logrotate管理日志文件

  • 創建配置文件 /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
    }
    

集中式日志管理(ELK Stack)

  • 配置Filebeat收集Swagger日志
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/swagger/*.log
      fields:
        app: swagger
        env: production
    output.logstash:
      hosts: ["logstash-server:5044"]
    
  • Logstash配置示例
    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相關的日志,確保系統的穩定運行和問題的快速排查。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女