Почему новый файл журнала создается при загрузке приложения, даже если в тот же промежуток времени? - PullRequest
0 голосов
/ 11 июля 2019

Мы используем 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? И если да, то как я могу настроить его так, чтобы он выполнял свое намеренное поведение?

...