Мой ответ основан на logback
, а не log4j
(извините за путаницу ..)
Вы можете достичь этого журналавращение с помощью TimeBasedRollingPolicy
.
например)
<appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/system.log.%d{yyyy-MM-dd}</fileNamePattern>
<!-- keep last 30 days of logs -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n</Pattern>
</encoder>
</appender>
Он будет вращаться в полночь и удалит файлы журнала старше 30 дней.
fileNamePattern: период пролонгации выводится из значения fileNamePattern
maxHistory: необязательное свойство maxHistory управляет максимальным количеством архивных файлов, которые необходимо сохранить, асинхронно удаляя старые файлы. Например, если вы укажете ежемесячный ролловер и установите для maxHistory значение 6, то архивные файлы на 6 месяцев будут сохранены, а файлы старше 6 месяцев будут удалены. Обратите внимание, что при удалении старых архивных файлов журнала все папки, созданные с целью архивирования файла журнала, будут удалены соответствующим образом.
Более подробную информацию можно получить по TimeBasedRollingPolicy