温馨提示×

Swagger在Linux上如何进行日志记录

小樊
44
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