首页 > 解决方案 > Spring Access 日志按天轮换

问题描述

我将嵌入式 Jetty 服务器用于 spring 应用程序。我尝试将访问日志配置为每天有一个日志文件,但所有访问日志都添加到一个文件中。

在我的应用程序属性文件中:

server.jetty.accesslog.enabled=true
server.jetty.accesslog.append=true
server.jetty.accesslog.filename=/var/logs/access.log
server.jetty.accesslog.file-date-format=.yyyy-MM-dd
server.jetty.accesslog.retention-period=366

标签: springspring-bootjettyembedded-jetty

解决方案


该配置来自 Jetty 中一个旧的、现已弃用的请求日志机制。

对于这个旧配置,您必须使用该yyyy_MM_dd符号。

换句话说 ...

# This MUST contain `yyyy_MM_dd`
server.jetty.accesslog.filename=/var/logs/access_yyyy_MM_dd.log
# This MUST be `yyyy_MM_dd` (no other option is supported)
server.jetty.accesslog.file-date-format=yyyy_MM_dd

Jetty 已经转移到CustomRequestLog了日志输出的格式,并使用一个实现RequestLog.Writer来确定这个格式化的日志被写入到哪里。

最常见的RequestLog.Writer选择是Slf4jRequestLogWriter将格式化的日志写入指定slf4j-api位置,这允许您使用您选择的日志记录实现(logback、java.util.logging、commons-logging、log4j1、log4j2 等)来配置和指定滚动该日志记录实现(例如:按大小、时间、其他事件等)。

唯一的其他实现RequestLog.WriterAsyncRequestLogWriter,它具有相同的文件名和 fileDateFormat 规则如上所述。

请参阅 spring + 上的过去答案CustomRequestLoghttps ://stackoverflow.com/a/66079787/775715


推荐阅读