如何使用Logback SizeAndTimeBasedFNATP限制每天的文件数

时间:2012-02-01 19:03:34

标签: logback

使用Logback SizeAndTimeBasedFNATP触发策略时,如何限制每天的文件数量?例如,在任何一天,我都不希望拥有超过100MB的日志。鉴于每个日志(在下面的示例中)是20MB,我希望能够设置每天5个文件的最大限制。

FixedWindowRollingPolicy提供maxIndex属性,但TimeBasedRollingPolicy没有maxIndex。使用TimeBasedRollingPolicy时是否有推荐的方法来应用maxIndex?

<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>

2 个答案:

答案 0 :(得分:3)

目前这是不可能的。看看这个答案Logback, set max history files per day。 您无法滚动基于时间和大小的滚动/触发策略。

答案 1 :(得分:0)

可以用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