繁体   English   中英

如何配置 Logback 以每小时轮换文件 n 天?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM