Моя відповідь заснована на 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