Swagger本身不直接处理日志管理,但您可以通过以下几种方式在Linux环境中管理与Swagger相关的日志:
配置示例(Logback for Java):
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/var/log/myapp/swagger.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="io.swagger" level="DEBUG" additivity="false">
<appender-ref ref="FILE" />
</logger>
</configuration>
server {
...
access_log /var/log/nginx/swagger_access.log;
error_log /var/log/nginx/swagger_error.log;
location /swagger-ui/ {
# 可以单独记录Swagger UI访问日志
access_log /var/log/nginx/swagger_ui_access.log;
}
}
<VirtualHost *:80>
...
CustomLog /var/log/apache2/swagger_access.log combined
ErrorLog /var/log/apache2/swagger_error.log
<Location "/swagger-ui">
CustomLog /var/log/apache2/swagger_ui_access.log combined
</Location>
</VirtualHost>
使用logrotate
管理日志文件:
/etc/logrotate.d/swagger
示例:
/var/log/myapp/swagger.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 644 root root
postrotate
/usr/bin/systemctl reload myapp.service > /dev/null
endscript
}
<source>
@type tail
path /var/log/myapp/swagger.log
tag swagger
format none
</source>
<match swagger>
@type elasticsearch
host localhost
port 9200
index_name swagger-%Y.%m.%d
</match>
对于Swagger UI前端日志,可以: 1. 在浏览器控制台捕获日志 2. 使用前端日志库如loglevel发送到后端
// 前端代码示例
import log from 'loglevel';
log.enableAll();
log.info('Swagger UI initialized');
// 可选:发送日志到后端
if (process.env.NODE_ENV === 'production') {
log.methodFactory = function (methodName, logLevel, loggerName) {
return function (message) {
fetch('/api/log', {
method: 'POST',
body: JSON.stringify({level: methodName, message})
});
};
};
}
对于Swagger生成的API端点,可以添加中间件记录请求/响应:
// Spring Boot示例
@Bean
public FilterRegistrationBean<RequestResponseLoggingFilter> loggingFilter() {
FilterRegistrationBean<RequestResponseLoggingFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new RequestResponseLoggingFilter());
registrationBean.addUrlPatterns("/api/*");
registrationBean.setOrder(2);
return registrationBean;
}
通过以上方法,您可以全面管理Swagger在Linux环境中的各类日志,便于调试、监控和审计。