文中结合配置和坐标轴的关系进行案例讲解,文中知识针对每个案例情况进行解释,当然也存在其他案例,对比理解即可。
配置案例
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>log_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>5</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<totalSizeCap>50MB</totalSizeCap>
<maxFileSize>10MB</maxFileSize>
</rollingPolicy>
配置映射到坐标轴解释
因为将上述配置结合坐标轴进行解释,横轴对应的是时间,纵轴对应的是文件大小:
log_%d{yyyy-MM-dd}.%i.log: 定义了横轴的刻度大小是天
maxHistory:定义了保留近5天的数据
totalSizeCap:定义了有效文件个数totalSizeCap/maxFileSize,其余的删除
maxFileSize:定一个耽搁文件的大小,纵轴的刻度大小是10MB
坐标轴图示
绿色方块:时间刻度
黄色方块:有效日志文件
红色方块:超出时间或者文件总大小被删除的文件
如果2023-12-15是最新日期,因此对应到坐标轴:
仅超出时间限制
案例1
- 2023-12-10中的log_2023-12-10.6.log被删除是因为超出时间限制。
超出文件个数totalSizeCap/maxFileSize
案例1
- 2023-12-11当天log_2023-12-11.0.log被删除,是因为要生成新的文件但已存在的文件个数超过限制,需要删除最旧的文件。
案例2
- 2023-12-15当天log_2023-12-15.0.log被删除,是因为要生成新的文件但已存在的文件个数超过限制,需要删除最旧的文件。
即超出文件个数,也超出时间
案例1
- 2023-12-10当天所有文件被删除,原因1 超过时间限制,原因2超过文件数量限制
- 2023-12-11当天 log_2023-12-11.0.log文件被删除,是因为在有效的时间范围内,超出了文件数量限制,删除最旧的文件。
总结
只有满足时间范围又满足文件个数限制才能存在,否则优先删除最旧的文件。