Старые файлы журнала не удалялись при использовании logback RollingFileAppender - PullRequest
0 голосов
/ 14 февраля 2019

Мой файл logback.xml выглядит следующим образом, и я установил MaxHistory = 1, чтобы удалить старые файлы журнала и хранить журнал только один день.Но я обнаружил, что старые файлы не удаляются.Я все еще мог видеть их как: app.log.2019-02-11 app.log.2019-02-12

<configuration>
    <property name="APP_NAME" value="logbacktest-logs" />
    <property name="LOG_HOME" value="/tmp/${APP_NAME}" />
    <property name="ENCODER_PATTERN" value="%d %C.%method:%L _ %msg%n"/>
    <contextName>${APP_NAME}</contextName>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${ENCODER_PATTERN}</pattern>
        </encoder>
    </appender> 
    <appender name="APP_APPEND" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/app.log.%d{yyyy-MM-dd}</fileNamePattern>
            <MaxHistory>1</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${ENCODER_PATTERN}</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APP_APPEND" />
    </root>

</configuration>

1 Ответ

0 голосов
/ 14 февраля 2019

Это часть моего журнала

12: 11: 32,358 | -INFO в cqlcore.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Роллинг в полночь.

, которыйозначает, что, скажем, ваше приложение не работало в течение этого времени, тогда оно не может удалить его

Я столкнулся с той же проблемой, когда установил maxHistory на 5, иногда он удалял 5 файлов журналано когда мое приложение умерло, оно не могло удалить журналы, потому что у него не было возможности удалить.


Ссылаясь на документы журнала, он говорит, что вы можете использовать это:

<cleanHistoryOnStart> true </cleanHistoryOnStart>   

Если установлено значение true, удаление архива будет выполняться при запуске приложения.По умолчанию это свойство имеет значение false.

Удаление архива обычно выполняется во время пролонгации.Тем не менее, некоторые приложения могут не функционировать достаточно долго, чтобы их можно было запустить.Отсюда следует, что для таких недолговечных приложений удаление архива может никогда не получить шанс выполнить.Если для параметра cleanHistoryOnStart установлено значение true, удаление архива выполняется при запуске приложения.


Измените ваш кусок logback-spring.xml на:

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_HOME}/app.log.%d{yyyy-MM-dd}</fileNamePattern>
        <maxHistory>1</maxHistory>
        <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
...