Я использую Logback для управления журналами на сервере. Я использую RollingFileAppender
с TimeBasedRollingPolicy
:
<appender name = "file-appender" class = "ch.qos.logback.core.rolling.RollingFileAppender">
<file>/server/logs/error.log</file>
<encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${defaultPattern}</pattern>
</encoder>
<rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- hourly rollover -->
<fileNamePattern>/server/logs/history/%d{yyyy-MM-dd,aux}/error.%d{yyyy-MM-dd_HH}.log.zip</fileNamePattern>
<maxHistory>168</maxHistory> <!--7Days-->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<filter class = "ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
Я установил для maxHistory
значение 168, чтобы журналы сохранялись в течение семи дней (один файл в час, 24 файла в день = 168 файлов).
Заглянув в папку history
, я ожидал найти подкаталог за последние семь дней и 24 заархивированных файла журнала в каждом из них (помимо текущего и самого старого).
Но есть 76 папок, вернувшихся примерно на 4 месяца. В течение некоторых дней нет папки, и многие папки не содержат zip-файлов за каждый час. Но всего в дереве history
более 1000 zip файлов.
Так что есть какая-то очистка, но кажется, что некоторые файлы очищаются очень поздно. Что не так с моей конфигурацией? Я использую версию logback-classic-1.2.3.
Я еще не использовал скользящую политику таким образом. Я бы реализовал это так:
<fileNamePattern>/server/logs/history/error.%d{yyyy-MM-dd_HH}.log.zip</fileNamePattern>
См. Также эта ветка
Возможный дубликат logback создать файлы журнала внутри папки с именем текущей даты