Есть две проблемы, с которыми я сталкиваюсь при использовании 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>