解决Logback日志不会每天生成新文件的问题

本文分析了一个线上项目中logback配置导致的日志文件不按日切割的问题。原来配置使用TimeBasedRollingPolicy配合SizeBasedTriggeringPolicy,但这种组合会导致按日切割失效。解决方案是改用SizeAndTimeBasedRollingPolicy,既考虑时间也限制单个文件大小,确保日志文件合理管理和滚动。
摘要由CSDN通过智能技术生成

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>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值