Log4j 未使用最新版本 log4j-2.17.2 滚动更新
Log4j not rolling over with latest version log4j-2.17.2
我有一个 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=真
有谁知道为什么从 log4j-2.17.1 升级到 log4j-2.17.2 时会停止每天滚动,以及我需要进行哪些更改才能使其与 2.17.2 一起使用?
来自 Log4j 1.x 的 RollingFileAppender
(参见 javadoc)从不支持基于时间的旋转,也不支持 datePattern
和 filePattern
属性。
Log4j 1.x bridge 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
- 或者使用 Log4j2 配置文件直接配置 Log4j2
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 配置文件,您将可以访问附加程序的所有配置选项。
我有一个 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=真
有谁知道为什么从 log4j-2.17.1 升级到 log4j-2.17.2 时会停止每天滚动,以及我需要进行哪些更改才能使其与 2.17.2 一起使用?
来自 Log4j 1.x 的 RollingFileAppender
(参见 javadoc)从不支持基于时间的旋转,也不支持 datePattern
和 filePattern
属性。
Log4j 1.x bridge 2.17.1 有一个错误导致发生基于时间和基于大小的旋转(参见
如果你想要基于时间的旋转,你需要:
- 要么配置一个
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
- 或者使用 Log4j2 配置文件直接配置 Log4j2
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 配置文件,您将可以访问附加程序的所有配置选项。