Log4j2 回滚后总是写入同一个文件

Log4j2 Always writing to the same file after rollback

我正在尝试将日志设置为每分钟轮换一次。日期和时间戳有效,但一旦触发翻转,新条目将写入前一分钟的日志文件中。即它没有在下一分钟创建新的日志文件。

例如。在第一分钟,条目被写入 A2018-11-27 11:50.csv 在下一分钟,它仍然写入 A2018-11-27 11:50.csv,即使它已经创建了一个名为 2018-11-27 11:50.csv.gz 的滚动存档。它应该创建一个新的日志文件 A2018-11-27 11:51.csv。

有什么建议吗?

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" monitorInterval="30">
  <Console name="Console" target="SYSTEM_OUT">
    <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
  </Console>
  <Appenders>
    <RollingFile name="HR0" fileName="../logs/m/A${date:yyyy-MM-dd hh:mm}.csv" filePattern="../logs/m/AAA ${date:yyyy-MM-dd hh:mm}.csv">
      <CronTriggeringPolicy schedule="0 * * * * ?" />
    </RollingFile>
  </Appenders>
  <Loggers>
  <Root level="info">
    <AppenderRef ref="Console"/>
  </Root>
  <Logger name="HR0" additivity="false" level="info">
    <AppenderRef ref="HR0" />
  </Logger>
</Configuration>

someJavafile.java

public class someJavafile {
    private final Logger itsLoggerHR0 = LogManager.getLogger("HR0");
    itsLoggerHR0.info("AAA");
}

我设法根据来自 log4j2 的这个 jira 票证解决了这个问题: https://issues.apache.org/jira/browse/LOG4J2-1185

我将post我的工作解决方案放在这里。我正在使用 log4j2 2.11.1

解决方法是删除 "fileName" 并在 filePattern

中使用 %d 而不是 $
<RollingFile name="HR0" filePattern="../logs/measure/%d{yyyy-MM-dd hh:mm}.csv">
  <CronTriggeringPolicy schedule="0 * * * * ?" />
</RollingFile>