logback配置文件:
问题现象:
上图是最初的logback的配置, 线上发现经常不会按日生成日志文件, 而是一个日志越来越大, 只有在项目重启之后才会生成当天的日志文件。
原因分析:
该配置使用了基于时间的滚动切割策略 TimeBasedRollingPolicy,每天0点自动生成一份新的日志文件。
但里面包含了一段 triggeringPolicy 触发策略,即最大单个文件超过 10MB 自动新成新日志文件,TimeBasedRollingPolicy 是基于时间的,不能和其他策略一起组合使用。
解决方案:
去掉组合策略 triggeringPolicy,使用时间和大小组合策略
<!-- 按照每天生成日志文件 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名, %i 是必须要加上去的,是单个日志文件超大小后的切割序号-->
<FileNamePattern>${LOG_PATH}/zsbankcitapp.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<MaxFileSize>50MB</MaxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<!--日志文件最大的大小-->
<!-- triggeringPolicy 会和 TimeBasedRollingPolicy 冲突,导致按日生成日志文件不生效 -->
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
<!--<MaxFileSize>100MB</MaxFileSize>-->
<!--</triggeringPolicy>-->
</appender>