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

问题描述 投票:0回答: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=true

有谁知道为什么从 log4j-2.17.1 升级到 log4j-2.17.2 时会停止每天滚动,以及我需要进行哪些更改才能使其与 2.17.2 一起使用?

logging log4j rollover bridge
2个回答
0
投票

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
    
  • 或使用 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 配置文件,您将可以访问附加程序的所有配置选项。


0
投票

不确定是否有人发现日志文件以 .gz 格式滚动时数据丢失。文件翻转后,我们甚至丢失了 400K 行数据,并且 gz 文件中只有 2 或 10 行。如果有人遇到过这个问题,请分享您的想法

© www.soinside.com 2019 - 2024. All rights reserved.