Log4j未使用最新版本log4j-2.17.2滚动

5anewei6  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(194)

我有一个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一起工作?

vlurs2pr

vlurs2pr1#

Log4j 1.x中的RollingFileAppender(参见javadoc)从不支持基于时间的旋转,也不支持datePatternfilePattern属性。
Log4j 1.x桥接器2.17.1有一个错误,导致基于时间和基于大小的旋转发生(参见this question)。这在版本2.17.2中得到了修复。
如果要基于时间的旋转,则需要:

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配置文件,则可以访问附加器的所有配置选项。

相关问题