Logback:Rollover不会删除过期的日志



我有一个RollingFileAppender,它正在将日志归档到如下文件中:
/data/work/logs/printPDF/logs/service/printPDF 2020-01/printPDF_2020-01-23_0.log.gz

不幸的是,它没有删除旧的归档文件(如上面提到的那个(

有人知道我做错了什么吗

以下是Startup Logback Console输出的摘录:

- setting totalSizeCap to 20 GB
- Archive files will be limited to [100 MB] each.
- Will use gz compression
- Will use the pattern /data/work/logs/printPDF/logs/service/printPDF_%d{yyyy-MM, aux}/printPDF_%d{yyyy-MM-dd}_%i.log for the active file
- The date pattern is 'yyyy-MM-dd' from file name pattern '/data/work/logs/printPDF/logs/service/printPDF_%d{yyyy-MM, aux}/printPDF_%d{yyyy-MM-dd}_%i.log.gz'.
- Roll-over at midnight.
- Setting initial period to Tue Nov 10 05:31:17 MET 2020
- Cleaning on start up
- Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
- first clean up after appender initialization
- Multiple periods, i.e. 32 periods, seem to have elapsed. This is expected at application start.
- Active log file name: /data/work/logs/printPDF/printPDF.log
- File property is set to [/data/work/logs/printPDF/printPDF.log]

正如您从控制台输出中看到的,它已经识别出每日日期模式&预计午夜翻车

它在午夜滚动,但过期的日志不会被删除。以下是它未能删除的几个文件名:

/data/work/logs/printPDF/logs/service/printPDF_2020-01/printPDF_2020-01-23_0.log.gz
/data/work/logs/printPDF/logs/service/printPDF_2020-01/printPDF_2020-01-23_1.log.gz
/data/work/logs/printPDF/logs/service/printPDF_2020-02/printPDF_2020-02-28_0.log.gz

这是它在午夜刚刚创建的一个:

/data/work/logs/printPDF/logs/service/printPDF_2020-11/printPDF_2020-11-10_0.log.gz

这里是logback.xml,我希望它能保留90天:

<configuration debug="true">
<property name="SERVICE"  value="printPDF" />
<property name="LOGDIR"   value="/data/work/logs/${SERVICE}" />
<appender name="STDOUT"   class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGDIR}/${SERVICE}.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOGDIR}/logs/service/${SERVICE}_%d{yyyy-MM, aux}/${SERVICE}_%d{yyyy-MM-dd}_%i.log.gz</FileNamePattern>
<maxHistory>90</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>20GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
<logger name="org.apache"     level="ERROR"/>
<logger name="ch.qos.logback" level="INFO"/>
<root level="INFO">
<appender-ref  ref="STDOUT"/>
<appender-ref  ref="RollingFile"/>
</root>
</configuration>

您正在使用每月滚动:"%d{yyyy-MM}";因此maxhistory=3将保留三个月的日志。

最新更新