Log4j2 Всегда записывать в один и тот же файл после отката - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь настроить журнал так, чтобы он вращался каждую минуту.Дата и отметка времени работают, но после запуска ролловера новая запись будет записана в файл журнала предыдущей минуты.то есть он не создал новый файл журнала в следующую минуту.

Например.В первую минуту записи записываются в 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");
}

1 Ответ

0 голосов
/ 27 ноября 2018

Мне удалось выяснить это, основываясь на этом билете jira из log4j2: https://issues.apache.org/jira/browse/LOG4J2-1185

Я опубликую свое рабочее решение здесь.Я использую log4j2 2.11.1

Исправление - удалить «fileName» и использовать% d вместо $ в вашем filePattern

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