我有一个 log4j 配置,旨在每天滚动一次文件。它在 log4j-2.17.0 和 2.17.1 上运行良好。当我更新到最新版本 2.17.2 时,每日日志停止滚动。
这是我的 log4j.properties:
log4j.rootLogger=INFO, A2
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.threshold=debug
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d [%t] %-5p - %m%n
log4j.appender.A2.DatePattern='.'MMdd
log4j.appender.A2.File=c:/test/log/test.log
log4j.appender.A2.filePattern=c:/test/log/test.log.%d{MMdd}
我添加的 2 个开关是 -Dlog4j.configuration=C:/test/log4j.properties 和 -Dlog4j1.compatibility=true
有谁知道为什么从 log4j-2.17.1 升级到 log4j-2.17.2 时会停止每天滚动,以及我需要进行哪些更改才能使其与 2.17.2 一起使用?
Log4j 1.x 中的
RollingFileAppender
(参见 javadoc)从不支持基于时间的旋转,也不支持 datePattern
和 filePattern
属性。
Log4j 1.x 桥 2.17.1 有一个错误,导致发生基于时间和基于大小的旋转(参见这个问题)。此问题已在 2.17.2 版本中修复。
如果您想要基于时间的轮换,您需要:
DailyRollingFileAppender
:
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d [%t] %-5p - %m%n
log4j.appender.A2.DatePattern=.MMdd
log4j.appender.A2.File=c:/test/log/test.log
RollingFileAppender
:
<RollingFileAppender name="A2"
fileName="C:\test\log\test.log"
filePattern="C:\test\log\test.log.%d{MMdd}">
<PatternLayout pattern="%d [%t] %-5p %c - %m%n" />
<TimeBasedTriggeringPolicy />
</RollingFileAppender>
在这两种情况下都会使用 Log4j2
RollingFileAppender
,但如果您使用 Log4j2 配置文件,您将可以访问附加程序的所有配置选项。
不确定是否有人发现日志文件以 .gz 格式滚动时数据丢失。文件翻转后,我们甚至丢失了 400K 行数据,并且 gz 文件中只有 2 或 10 行。如果有人遇到过这个问题,请分享您的想法