Logback не очищает файлы должным образом

Я использую 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.

Возможный дубликат logback создать файлы журнала внутри папки с именем текущей даты

Adam Ostrožlík 10.09.2018 13:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
326
1

Ответы 1

Я еще не использовал скользящую политику таким образом. Я бы реализовал это так:

<fileNamePattern>/server/logs/history/error.%d{yyyy-MM-dd_HH}.log.zip</fileNamePattern>

См. Также эта ветка

Другие вопросы по теме