Search code examples
javalogback

logback : SizeAndTimeBasedRollingPolicy not deleting files with 4 digit "%i"


We are using SizeAndTimeBasedRollingPolicy/SizeAndTimeBasedFNATP in our product (logback 1.1.3). Here is snip from the logback configuration file :

<appender name="SERVER_FILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${MY_LOGS}/myabc.log</file>
    <append>true</append>
    <!-- 
        Roll log file on both time (per day) and size (250mb). Gzip on roll.
    -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- location and name of rolled log files -->
        <fileNamePattern>${MY_LOGS}/myabc-%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
        <!-- keep 30 days worth of history -->
        <maxHistory>30</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- whenever the file size reaches 250MB, roll it -->
            <maxFileSize>250MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{24} [%C{1}.%M]</pattern>
    </encoder>
</appender>

The log files generated have the following names : myabc-2016-11-21.0.gz, myabc-2016-11-21.1.gz, myabc-2016-11-21.2.gz etc.

The problem is if a log file has extension (%i) more than 3 digits, it is not being deleted after 30 days (maxHistory). For example, myabc-2016-11-21.0.gz gets deleted after 30 days, but myabc-2016-11-21.1000.gz is NOT getting deleted.

Is there any other appender/configuration which I need to add to the logback configuration file to make sure files with more than 3 digit extension also gets deleted or is it a bug in logback?

[I have tried with logback 1.1.7, but that did not help]


Solution

  • It is a bug in logback. Here is the jira and here is the proposed fix (PR).