企业网站如何做推广,关键字排名查询,如何购买大量客户电话号码,做网站不用服务器吗转载自 坑爹的日志无法按天切割问题问题背景
线上某个新管理型系统出现了日志无法按天切割生成日志文件的问题#xff0c;所有的日志都在一个日志文件里面#xff0c;只有每次重启的时候才会重新生成文件。
这个管理系统使用的是 Spring Boot Logback 框架#xff0c;查看了…转载自 坑爹的日志无法按天切割问题问题背景
线上某个新管理型系统出现了日志无法按天切割生成日志文件的问题所有的日志都在一个日志文件里面只有每次重启的时候才会重新生成文件。
这个管理系统使用的是 Spring Boot Logback 框架查看了 Logback 的日志文件发现了策略组合使用问题。
以下是有问题的日志配置代码。
appender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filterrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyFileNamePattern${LOG_PATH}/info.log.%d{yyyy-MM-dd}.log/FileNamePatternMaxHistory30/MaxHistory/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern/encodertriggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicyMaxFileSize10MB/MaxFileSize/triggeringPolicy/appender
该配置使用了基于时间的滚动切割策略 TimeBasedRollingPolicy每天0点自动生成一份新的日志文件。
但里面包含了一段 triggeringPolicy 触发策略即最大单个文件超过 10MB 自动新成新日志文件 TimeBasedRollingPolicy 是基于时间的不能和其他策略一起组合使用。
解决办法1、去掉组合策略 triggeringPolicy
appender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filterrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyFileNamePattern${LOG_PATH}/info.log.%d{yyyy-MM-dd}.log/FileNamePatternMaxHistory30/MaxHistory/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern/encoder/appender
2、使用时间和大小组合策略 SizeAndTimeBasedRollingPolicy
appender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filterrollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyFileNamePattern${LOG_PATH}/info.log.%d{yyyy-MM-dd}.%i.log/FileNamePatternMaxHistory30/MaxHistorymaxFileSize20MB/maxFileSize/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern/encoder
/appender
注意后面的 %i 是必须要加上去的是单个日志文件超大小后的切割序号。
使用以上两种方案都可以解决 Logback 无法按天切割生成日志的问题如果这两种解决不了你的问题那你也要检查下你的滚动策略是否使用正确。
问题偶遇
巧了Java技术栈知识星球上也有球友遇到了这类问题。他使用了 Resin Log4j 框架还是要检查配置配置错了一点就会导致无法正常生成滚动日志文件。。。