在Linux上,Swagger本身不提供日志记录功能,但你可以使用你的应用程序框架或第三方库来记录API请求和响应。以下是一些常见的方法:
log4net.Config
的XML配置文件,定义输出附件器、文件路径、文件名模式等。swagger.json
或 swagger.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");
});
如果你的Swagger服务是通过Systemd管理的,可以使用 journalctl
命令来查看和管理日志。
journalctl -u swagger-editor
sudo journalctl --vacuum-time=1w # 只保留一周的日志
sudo journalctl --vacuum-size=500M # 只保留指定大小的日志
logrotate
是一个在Linux系统上管理日志文件的工具,可以自动分割、压缩、删除和邮件通知日志文件。
sudo apt-get install 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 # 强制旋转日志文件
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相关的日志文件。