Chand
Chand

Reputation: 23

logback.xml Date only

I am new to coding and stackoverflow, We are using logback for logging our application, as of now we are using {fileName}.%d{yyyy-MM-dd}.log naming convention for the time based rolling policy (rolling take place each and every day) and have set 30 days as the maximum time for a log to be stored in the application. We need to change the naming convention to only date format ({fileName}.%d{dd}.log). But we are getting "The date format in fileNamePattern will result in collisions in the names of archived log files." error

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </layout>
</appender>

<appender name="dailyRollingFileAppender"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/deliveryService.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n
        </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>logs/deliveryService.%d{yyyy-MM-dd}.log
        </fileNamePattern>
        <!-- Delete log after 30 days -->
        <maxHistory>30</maxHistory>
    </rollingPolicy>

</appender>


<!-- Send logs to both console and file audit -->
<logger name="com.bnsf" level="debug"
        additivity="false">
    <appender-ref ref="dailyRollingFileAppender" />
    <appender-ref ref="STDOUT" />
</logger>

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

Upvotes: 1

Views: 2065

Answers (1)

Alex
Alex

Reputation: 250

Because in a month like February, with only 28/29 days, in a 30-day windows you will have deliveryService.01.log and deliveryService.02.log files twice.

Upvotes: 1

Related Questions