溫馨提示×

Swagger在Linux上如何進行日志記錄

小樊
45
2025-04-21 05:25:33
欄目: 智能運維

在Linux上,Swagger本身不提供日志記錄功能,但你可以使用你的應用程序框架或第三方庫來記錄API請求和響應。以下是一些常見的方法:

使用Log4net進行日志記錄

  • 創建配置文件:創建一個名為 log4net.Config 的XML配置文件,定義輸出附件器、文件路徑、文件名模式等。
  • 配置Swagger:在Swagger配置文件(如 swagger.jsonswagger.yaml)中,通過 log4net 的配置來記錄日志。
  • 集成到應用:在應用程序中集成 log4net,例如在 Program.cs 中添加 log4net 的配置代碼。

示例配置文件 log4net.Config:

<log4net>
  <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log\log.txt" append="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd".txt" />
    <maxSizeRollBackups value="20" />
    <maximumFileSize value="3MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ALL" />
      <levelMax value="FATAL" />
    </filter>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="rollingAppender" />
  </root>
</log4net>

Program.cs 中添加 log4net 配置:

using log4net;

var builder = new ConfigurationBuilder()
    .SetBasePath(AppContext.BaseDirectory)
    .AddJsonFile("log4net.Config", optional: false, reloadOnChange: true);

builder.AddSwaggerGen(options =>
{
    options.SwaggerDoc("v1", new OpenApiInfo { Title = "系統后端API接口文檔", Version = "v1", Description = "Core API版本v1" });
    var file = Path.Combine(AppContext.BaseDirectory, "WebApi.xml");
    options.IncludeXmlComments(file, true);
    builder.Logging.AddLog4Net("CfgFile/log4net.Config");
});

使用Systemd管理日志

如果你的Swagger服務是通過Systemd管理的,可以使用 journalctl 命令來查看和管理日志。

  • 查看日志
    journalctl -u swagger-editor
    
  • 清理日志
    sudo journalctl --vacuum-time=1w  # 只保留一周的日志
    sudo journalctl --vacuum-size=500M  # 只保留指定大小的日志
    

使用logrotate管理日志文件

logrotate 是一個在Linux系統上管理日志文件的工具,可以自動分割、壓縮、刪除和郵件通知日志文件。

  • 安裝logrotate
    sudo apt-get install logrotate
    
  • 配置logrotate: 創建一個名為 swagger-editor.conf 的文件:
    sudo vi /etc/logrotate.d/swagger-editor
    
    內容示例:
    /var/log/swagger-editor/*.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        create 0644 root root
    }
    
  • 測試配置并強制旋轉日志
    sudo logrotate -d /etc/logrotate.d/swagger-editor  # 測試配置文件是否有錯誤
    sudo logrotate -f /etc/logrotate.d/swagger-editor  # 強制旋轉日志文件
    
  • 手動運行logrotate
    sudo logrotate /etc/logrotate.d/swagger-editor
    

使用自定義腳本管理日志

對于更復雜的日志管理需求,可以編寫自定義腳本來管理Swagger相關的日志文件。例如,使用 crontab 定時執行日志清理腳本。

  • 創建清理腳本
    sudo vi /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 文件:
    crontab -e
    
    添加以下行以每天清理日志:
    0 0 * * * /usr/local/bin/clean-swagger-logs.sh
    

通過以上方法,你可以在Linux上有效地管理Swagger相關的日志文件。

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