Log4j2 не катит файлы, как это было в первой ревизии. Я что-то упустил в новой конфигурации? - PullRequest
1 голос
/ 02 апреля 2019

Есть две проблемы, с которыми я сталкиваюсь при использовании log4j2 и приложения RollingFile.Во-первых, если не существует существующих архивных файлов, то в качестве имени файла всегда указывается самая ранняя возможная дата, а не дата создания файла или дата прикосновения.Вторая проблема возникает в основном во время тестирования, потому что я часто запускаю и останавливаю свой код.Всякий раз, когда я останавливаю / запускаю сервер, он перемещает текущий журнал в архив вместо добавления к текущему журналу.Специальных шагов для его создания не существует, достаточно иметь один текущий журнал с сегодняшнего дня и запустить программу.

Я попытался вручную установить TimeBaseTriggerPolicy, свойство добавления RollingFile и несколько раз изменить шаблон файла, но ничего не видночтобы исправить это.Я ознакомился с руководством по log4j2, поскольку элементы отличаются от первой версии.

https://logging.apache.org/log4j/2.x/manual/appenders.html

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <RollingFile name="runningLog"
            filename="./logs/FooIncoming.log"
            filePattern="./logs/FooIncoming-%d{yyyy-MM-dd}.log"
            ignoreExceptions="false"
            append="true">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%-5p] %x [%t] [%c{2}] [%m]%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
        </RollingFile>
...
    </Appenders>
    <Loggers>
        <Logger name="com.foo.bar"  additivity="false">
            <AppenderRef ref="runningLog" level="debug" />
            <AppenderRef ref="errorLog" level="error" />
            <AppenderRef ref="Console" level="error" />
        </Logger>
        <Logger name="research_logger" additivity="false">
            <AppenderRef ref="RESEARCH" level="all"/>
        </Logger>
        <Root level="all">
            <AppenderRef ref="runningLog"/>
        </Root>
    </Loggers>
</Configuration>

В качестве информации нижеприведенная замена - это работа, которую я нашел для работы, ноэто все еще кажется странным, я не могу сделать это так, как в документах API указано, что я могу.

<Policies>
   <TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy>
   <Delete basePath="./logs/" maxDepth="1">
      <IfFileName glob="FooIncoming-??????????.log" />
      <IfLastModified age="10d" />
   </Delete>
</DefaultRolloverStrategy>
...