Log4j2 覆盖过去一天的日志文件

Log4j2 overwrites past day log file

我正在使用 Log4j2 2.3 版

log4j2.xml 看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
    <RollingFile name="RollingFile"
                 fileName="${sys:catalina.base}/logs/catalina.${date:yyyy-MM-dd}.log"
                 filePattern="${sys:catalina.base}/logs/catalina.%d{yyyy-MM-dd}.log">
        <PatternLayout pattern="[TID=%X{TId}] %d{MMM dd, yyyy HH:mm:ss,SSS} %c %M:%L %p: %m%n"/>
        <TimeBasedTriggeringPolicy modulate="true" />
    </RollingFile>
</Appenders>
<Loggers>
    <Root level="DEBUG" >
        <AppenderRef ref="RollingFile" />
    </Root>
</Loggers>
</Configuration>

一切正常,直到第二天前一天的日志被当天的一些日志覆盖。

示例: catalina.2018-03-21.log 昨天(3 月 21 日)很好,但今天被 2018-03-22 的一些日志覆盖,当时 catalina.2018-03-22.log 包含今天的其余日志( 3 月 22 日)

有什么想法吗?

尝试

BasicConfigurator.resetConfiguration()

BasicConfigurator.configure()

之后使用logger的方法中

Log4j 2.3 有点老了,发布于 2015-05-09,快 3 年了。所以尝试使用更新版本; 2.11.0 版是目前最新的版本,于 2018 年 3 月 11 日发布。

更新:要继续使用 Log4j 2.3,您可以妥协您的要求。其中一个选项可能是对 fileName 属性使用静态值。例如。 .../catalina.log.../catalina.current.log

尝试将自动增量变量添加到您的文件模式 (%i)。 这对我来说很好。

filePattern="${sys:catalina.base}/logs/catalina.%d{yyyy-MM-dd}.%i.log"

在基于时间的 TimeBasedTriggeringPolicy 时间间隔中提及 1 它将按天更新文件