logback配置文件:

解决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>