logback удаляет журналы перед MaxHistory во время почасового отката

Я использую приложение ниже и вижу, что откат происходит каждый час.

Но я упомянул <maxHistory> как 10 дней. Но я мог видеть, что журналы автоматически удаляются logback в конце каждого дня.

Но ожидается, что файлы журнала будут храниться не более 10 дней.

<appender name="TIME_BASED_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>c:/logs/timeBasedlogFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">        
        <fileNamePattern>c:/logs/timeBasedlogFile.%d{yyyy-MM-dd_HH}.log</fileNamePattern>
        <maxHistory>10</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>%relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender> 

Если я использую ежедневный перенос, то я вижу, что журналы переноса сохраняются в течение количества дней, указанного в <maxHistory>.

Работает ли maxHistory только для ежедневного ролловера?


person Alagammal P    schedule 24.03.2017    source источник


Ответы (1)


Элемент maxHistory указывает количество свернутых файлов в историю.
Если вы выберете <maxHistory>10</maxHistory>, это означает, что у вас может быть история для 10 файлов.

В вашем случае вы указываете час как степень детализации прокатки. Это означает, что если ваше приложение регистрируется каждый час, история заполняется через 10 часов, а старые журналы истории очищаются.

С вашей почасовой конфигурацией файла наличие ровно 10 дней в качестве истории далеко не очевидно, поскольку ваше приложение может быть отключено несколько часов и даже несколько дней.

На самом деле, если вы хотите сохранить детализацию по часам, я думаю, вы должны указать историю в часах, а не в днях: вы должны выровнять оба.

Например, если вы считаете, что приложение работает 12 часов в день, вы можете указать 120 как значение history (12 часов * 10 дней), чтобы получить что-то близкое к 10 дням.
Если вы не справитесь с частотой журналы, и вы хотите убедиться, что у вас нет истории менее чем за 10 дней, используйте 240 как значение history (24 часа * 10 дней).
Единственный недостаток: если приложение не регистрирует каждый час каждого дня, вы получите больше истории по мере необходимости.

Если я использую ежедневный перенос, то я вижу, что журналы переноса сохраняются в течение количества дней, указанного в <maxHistory>.

Да, потому что, как объяснялось, степень детализации значения maxHistory зависит от детализации времени прокатки.

person davidxxx    schedule 24.03.2017
comment
Спасибо. Это работает хорошо, когда я сохраняю ‹maxHistory› как 240 (10 дней * 24 часа). - person Alagammal P; 29.03.2017
comment
Logback не удаляет файлы даже через 240 часов (я имею в виду 10 дней)? - person Alagammal P; 18.04.2017