最近在使用Logback时遇到的坑记录一下,避免再次遇到
在logback中我们知道 日志的回滚策略有很多种。但是常用的就是 根据时间/文件大小来滚动记录,比如每天滚动一次,每小时,日志文件超过指定大小时等等。
下面则是我想按照指定时间配置的logback.xml ,但是一直都没有生效 也就是日志文件一直都记录到一开始指定的文件中,没有滚动记录文件
节选片段
<appender name="testloger" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_FILE_PATH}/${LOG_FILE_NAME}</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd-HH:mm}.txt</fileNamePattern>
<MaxHistory>3</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
</appender>
这是我之前的配置文件,但是一直没有生效,也就是一直没有按照我想要的每分钟滚动记录一次。每次的日志都记录到了
<File>${LOG_FILE_PATH}/${LOG_FILE_NAME}</File>
配置的文件中,百思不得其解,起初以为是配置文件的问题,然后在网上找了好长时间与自己实验了好多次都还是一样的问题。
然而,一次偶然的实验中最后找到了问题的所在问题就在配置文件中的这一行
<fileNamePattern>${LOG_FILE_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd-HH:mm}.txt</fileNamePattern>
也就是滚动文件的命名方式上。出错原因就在HH:mm这里 因为windows下文件命名方式中不允许出现:就导致了滚动文件创建失败日志就会一直记录在活动文件中,也就不会产生分割。
PS: 活动文件——是appender 下的File节点指定的文件
日志会被优先记录到这里。当触发滚动策略时,会将活动文件中的内容移到滚动文件中。每次日志都会优先记录到活动文件
滚动文件—–是rollingPolicy 下的节点 fileNamePattern指定的文件
是根据滚动策略中fileNamePattern设定的文件,当触发滚动策略时会创建此文件
当活动文件没有指定时,则滚动文件就会是活动文件
当滚动文件没有指定时,则日志会记录到活动文件中,也就是触发滚动记录失败