Наше приложение регистрирует с использованием log4j2.У нас есть папка регистрации, назовем ее LOGPATH.Внизу у нас есть еще одна папка LOGBACKUPPATH, которая принимает папки типа YYYY-MM-DD_hh-mm-ss
.В нашем приложении мы определяем некоторые свойства для создания этих имен папок.
<Property name = "LOGBACKUPPATH">${sys:server.logarchivedir}/${sys:server.logarchive.timestamp}/</Property>
<Property name = "LOGPATH">${sys:server.logdir}</Property>
<RollingRandomAccessFile name="messages"
fileName="${LOGPATH}/messages.log"
filePattern="${LOGBACKUPPATH}//messages-$${date:yyyy-MM-dd-HH-mm-ss}.log.zip">
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="${DefMaxFileSize}" />
</Policies>
</RollingRandomAccessFile>
Из-за OnStartupTriggeringPolicy
log4j2 будет перемещать и сжимать все журналы из предыдущего запуска в точный путь, который мы установили для LOGBACKUPPATH.Этот путь содержит метку времени, взятую из времени предыдущего запуска.Мы знаем это время, потому что мы проверяем один из старых файлов журнала перед инициализацией log4j2.
Итак, эта часть заботится о старых файлах.
Поскольку у нас также есть SizeBasedTriggeringPolicy
, мы можем затем заархивировать новые файлы журналов из текущего цикла, чтобы сэкономить место на диске и защитить от переполнения.Однако, поскольку две политики используют стратегию одновременного нажатия клавиш, журналы текущего запуска попадают в ту же папку архива, что и записи последнего запуска.Было бы неплохо иметь две разные архивные папки для старой и текущей, но log4j2 не предоставляет этого, насколько я вижу.
В старые времена в log4j1 не было опции сжатия архива, поэтому мы развернули нашу собственную, сработавшую только при запуске.Но log4j2, кажется, больше не предоставляет возможности для этого.
Есть ли другой способ разделить архивные папки, чтобы OnStartupTriggeringPolicy
и SizeBasedTriggeringPolicy
могли сосуществовать?
Если мы каким-то образом можем установить другое имя архива и определить его на основе времени начала текущего запуска, как я могу убедиться, что следующий запуск использует это точное имя папки для OnStartupTriggeringPolicy
?