<appender name="TIME_BASED_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>c:/logs/timeBasedlogFile.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>c:/logs/timeBasedlogFile.%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
正常看这里的<maxHistory>
10天是可以的,但是这个是基于滚动保存的文件是按照天来计算的情况下,如果出现<fileNamePattern>配置的的{yyyy-MM-dd_HH}按小时来滚动,那么实际删除的就是10小时后的文件。
出现这种情况是因为框架逻辑理解过来本质提供的是删除多少个文件
感兴趣的可以看下TimeBasedArchiveRemover这个类,里面的clean()有根据滚动的时间维度来计算的逻辑。
看到这么多人查看,看来大家都遇到了一样的问题。
总结起来就是:当发现使用logback框架进行自动日志删除跟计划的不一样时,使用TimeBasedRollingPolicy滚动生成日志文件方法的,<maxHistory>
一律按照生成了多少个文件进行删除就可以了,大概计算下自己需要保留多少的日志文件来配置就可以了。