Dailyrollingfileappender没有创建超过1天的备份

时间:2018-05-04 11:02:15

标签: log4j

我的日志配置如下,但我只能看到正在创建一个备份文件,所有其他备份都会关闭/删除。

log4j.appender.application=org.apache.log4j.DailyRollingFileAppender
log4j.appender.application.File=${log.root.path}/test.log
log4j.appender.application.DatePattern='.'yyyy-MM-dd
log4j.appender.application.layout=org.apache.log4j.PatternLayout
log4j.appender.application.layout.ConversionPattern=%d{dd MMM 
HH\:mm\:ss\:SSS} [%t] %-5p [%c\:%M\:%L]  srcIp=%X{srcIp} - 
remoteHost=%X{remoteHost} -port=%X{port} - activityType=%X{activitytype} - 
activityStatus=%X{activitystatus} -applicationUser=%X{applicationUser} - 
APITXNID=%X{apiTxnId} -CustomerRefNum=%X{CustomerRefNum} -%m%n%n

1 个答案:

答案 0 :(得分:0)

您的配置看起来很好,您可以尝试做几件事:

  1. 尝试从log4j.appender.application.DatePattern替换'.'yyyy-MM-dd'.'yyyy-MM-dd-HH-mm,看看是否每分钟都会创建一个文件。如果有效,可能会有一些外部清理脚本删除旧日志。

  2. -Dlog4jdebug.true添加到VM选项以验证使用的log4j conf文件的有效性。

  3. 另请考虑使用API Documentation warning

      

    已观察到DailyRollingFileAppender出现同步问题和数据丢失。 log4j extras随附包括应考虑用于新部署的备选方案,并在org.apache.log4j.rolling.RollingFileAppender的文档中进行了讨论。

  4. 通过将log4j依赖项替换为实现log4j 1.2.x的apache-log4j-extras,但具有额外功能,例如org.apache.log4j.rolling.RollingFileAppenderTimeBasedRollingPolicy,您可以获得与上述配置相同的效果

    然后在log4j.properties

    中替换
    log4j.appender.application=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.application.File=${log.root.path}/test.log
    log4j.appender.application.DatePattern='.'yyyy-MM-dd
    

    log4j.appender.application=org.apache.log4j.rolling.RollingFileAppender
    log4j.appender.application.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
    log4j.appender.application.rollingPolicy.FileNamePattern=${log.root.path}/test.log.%d{yyyy-MM-dd-HH-mm}
    log4j.appender.application.File=${log.root.path}/test.log