本文共 1559 字,大约阅读时间需要 5 分钟。
问题背景
线上某个新管理型系统出现了日志无法按天切割生成日志文件的问题,所有的日志都在一个日志文件里面,只有每次重启的时候才会重新生成文件。
这个管理系统使用的是 Spring Boot + Logback 框架,查看了 Logback 的日志文件,发现了策略组合使用问题。
以下是有问题的日志配置代码。
INFO ${LOG_PATH}/info.log.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 10MB
该配置使用了基于时间的滚动切割策略 TimeBasedRollingPolicy
,每天0点自动生成一份新的日志文件。
但里面包含了一段 triggeringPolicy
触发策略,即最大单个文件超过 10MB 自动新成新日志文件,TimeBasedRollingPolicy
是基于时间的,不能和其他策略一起组合使用。
解决办法
1、去掉组合策略 triggeringPolicy
INFO ${LOG_PATH}/info.log.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
2、使用时间和大小组合策略 SizeAndTimeBasedRollingPolicy
INFO ${LOG_PATH}/info.log.%d{yyyy-MM-dd}.%i.log 30 20MB %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
注意后面的 %i
是必须要加上去的,是单个日志文件超大小后的切割序号。
使用以上两种方案都可以解决 Logback 无法按天切割生成日志的问题,如果这两种解决不了你的问题,那你也要检查下你的滚动策略是否使用正确。
问题偶遇
巧了,Java技术栈知识星球上也有球友遇到了这类问题。
他使用了 Resin + Log4j 框架,还是要检查配置,配置错了一点就会导致无法正常生成滚动日志文件。。。
如果你对此还有其他的解决方案,欢迎留言。想深入交流,或者对我们所有文章知识点有困惑的,扫描正文公众号,并在后台回复”星球”加入我们的知识星球一起学习。
推荐:
扫描关注我们的微信公众号,干货每天更新。
转载地址:https://javastack.blog.csdn.net/article/details/80434463 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!