Spring Boot中Logback持续生成大临时文件未删除的原因排查
Logback持续生成大临时文件的原因分析(基于你的配置)
核心问题:单日无大小切割导致活跃日志文件暴增
你使用的TimeBasedRollingPolicy仅会在每日00:00触发日志滚动,在滚动操作执行前,所有日志都会持续写入${appName}.log这个活跃日志文件:
- 如果单日日志量远超预期,这个活跃文件会变得异常庞大
- Logback执行滚动压缩时,会先创建一个与原日志文件体积几乎一致的临时文件用于压缩操作,直到压缩完成并生成最终的
${appName}.%d{yyyy-MM-dd}.log.gz归档文件后,才会删除该临时文件 - 这个过程中,临时文件会与原活跃日志文件同时占用磁盘空间,直接导致大量磁盘资源被消耗
配置参数的局限性
totalSizeCap:该参数仅用于清理历史归档日志,限制所有已压缩日志的总大小,完全不约束正在写入的活跃日志文件的增长,也不会触发中途的日志切割- 你尝试的
%i索引:确实仅适用于SizeAndTimeBasedRollingPolicy,因为它是唯一支持按时间+大小双重规则触发滚动的策略,能够在单日日志达到指定大小时就执行切割,从根源上避免活跃文件和临时文件过大
可自查的验证点
如果要确认具体场景,可以检查:
- 临时文件的命名(通常为
${appName}.log.tmp或类似格式),确认其出现时间是否集中在每日00:00的滚动时段 - 当日的
${appName}.log文件大小,是否远超服务器磁盘的合理承载阈值
内容的提问来源于stack exchange,提问作者Paul Kim
相关产品推荐
相关产品推荐

