Мы используем log4j2 в нашем проекте Spring Boot для записи сообщений. Политика, основанная на времени, определяется таким образом, чтобы журнал пролонгировался ежедневно. Смотри ниже мой log4j2.xml
.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="LOG_PATTERN">
%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
</Property>
</Properties>
<Appenders>
<Console name="RootConsoleAppender" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
<!-- Message logging -->
<RollingFile name="MessageFileAppender" fileName="logs/messages.log"
filePattern="logs/messages-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<Pattern>${LOG_PATTERN}</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.myapp.process.MessageLoggingProcessor" level="info">
<AppenderRef ref="MessageFileAppender"/>
</Logger>
<Root level="info">
<AppenderRef ref="RootConsoleAppender"/>
</Root>
</Loggers>
</Configuration>
Учтите, что я сначала регистрирую некоторые сообщения, а затем в тот же день перезагружаю приложение и регистрирую некоторые дополнительные сообщения. Я ожидаю, что все сообщения будут добавлены в один и тот же файл messages.log
, потому что ролловер происходит ежедневно, а это в один и тот же день. Однако в действительности после перезагрузки создается файл messages-2019-07-10-1.log
и новые сообщения регистрируются в messages.log. После второй перезагрузки мы получаем messages-2019-07-10-2.log
и т. Д.
Это ожидаемое поведение от log4j2? И если да, то как я могу настроить его так, чтобы он выполнял свое намеренное поведение?