Мой ответ основан на 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