我想每小时轮换一次日志文件,并在更换前保留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小时。
E.g。我希望看到: missing_field_20170104-10.log 一天之后 missing_field_20170105-10.log,
虽然它只保留24小时的日志文件。
答案 0 :(得分:0)
根据documentation,您应该将配置更改为
<maxHistory>48</maxHistory>
答案 1 :(得分:0)
在 official documentation 中,您会发现以下示例:
<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 标记都是必需的。