使用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>
答案 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>