![](/img/trans.png)
[英]How can I configure logback to rollover based on time or size, with an absolute max on total number of files?
[英]How can I configure Logback to rotate files hourly for n days?
我想每小时轮换日志文件并在替换它们之前将它们保留 n 天。 比如说 2 天,这意味着如果不满足 totalSizeCap,我应该看到 48 个日志文件。
<appender name="missing_fields" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/missing_fields.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/missing_fields_%d{yyyyMMdd-HH}.log</fileNamePattern>
<maxHistory>48</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%date#%level#%logger#thread#%message%n%xException</pattern>
</encoder>
我得到的是日志文件每小时轮换一次,但只有 24 小时。 所以在那之后,logback 开始替换文件而不是将它们保留 48 小时。
例如,我希望看到:missing_field_20170104-10.log,一天后missing_field_20170105-10.log,
而它只保留日志文件 24 小时。
根据文档,您应该将配置更改为
<maxHistory>48</maxHistory>
在官方文档中,您将找到以下示例:
<configuration>
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>mylog.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</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>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="ROLLING" />
</root>
</configuration>
请注意除“%d”之外的“%i”转换标记。 %i 和 %d 标记都是强制性的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.