问题描述:今天查看日志时,发现日志文件已经达到几百MB,且日志文件没有每天生成新的日志文件,只有每次启动的时候才生成了一个日志文件,应用不重启,日志文件一直会在原来文件中追加写入,不按照日期写入新的文件。
现在logback.xml配置:
<!-- 按照每天生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/electric_service.log.%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy></appender>
开始参考网上一些说法,都未能实现按日期生成日志文件,
网上方法一:appender 下面增加file 节点,生成了electric_service.log,修改时间,第二天后没有生成新的文件,失败!
<File>${LOG_HOME}/electric_service.log</File>
网上方法二:ch.qos.logback.core.rolling.TimeBasedRollingPolicy法改为ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy修改时间,第二天后没有生成新的文件,失败!
在研究发现,日志文件大小设置导致文件没有按照日期生成;
修改后logback.xml配置:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/electric_service.log.%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日志文件最大的大小--> <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">--> <!--<MaxFileSize>10MB</MaxFileSize>--> <!--</triggeringPolicy>--></appender>
生成结果:
总结:
不能同时按日志文件大小和日期分割日志文件,如果按照日期分割文件则,不能填写日志大小配置,不然会按日志大小切割,且只会生成对应大小的文件,超过规定大小后日志文件不在写入,也不生成新的文件。