5

When using the Logback SizeAndTimeBasedFNATP triggering policy, how can the number of files per day be limited? For example, on any given day, I don't want to have more than 100MB of logs. Given that each log (in the example below) is 20MB, I would want to be able to set a max limit of 5 files per day.

The FixedWindowRollingPolicy provides a maxIndex property, but the TimeBasedRollingPolicy does not have maxIndex. Is there a recommended approach to applying a maxIndex when using the TimeBasedRollingPolicy?

<appender name="some.file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>logs/some_app_%d{yyyyMMdd}.log.%i</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>20MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
    <pattern>%level %date{yyyy-MM-dd HH:mm:ss:SSS} %msg%n</pattern>
</encoder>

wyck
  • 53
  • 1
  • 5

2 Answers2

3

currently this is not possible. Look at this answer Logback, set max history files per day. You cannot rollover both time and size based rolling/triggering policy.

Community
  • 1
  • 1
Antoine Wils
  • 349
  • 2
  • 4
  • 21
2

It's possible to limit total size of logs with ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>log/log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
    <maxFileSize>100MB</maxFileSize>
    <maxHistory>60</maxHistory>
    <totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>

From logback docs

Nikita Kuznetsov
  • 2,527
  • 1
  • 11
  • 12