Search code examples
javaspring-bootlogbackslf4j

slf4j logback log rolling creating .tmp file


I have a issue where sometime log rolling creating a .tmp file and does not create the original log file back. interesting I noticed this happens when rolling of logs start 1 min before the midnight.

1.7.15

my logback.xml configuration is as below

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${COMPONENT_LOGDIR}/abc.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${COMPONENT_LOGDIR}/abc.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>750MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPatternMdc}</pattern>
        </encoder>
    </appender>

Solution

  • Using different rolling policy seemed to have fixed the issue. please refer to working config below:

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${COMPONENT_LOGDIR}/otm-rest.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${COMPONENT_LOGDIR}/otm-rest.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
                <maxFileSize>750MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <totalSizeCap>15GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${logPatternMdc}</pattern>
        </encoder>
    </appender>