现象:当指定logback的FileNamePattern为日期2020-01-15后,如果有线程不断的往里写log,过了零点文件不会变成下一日2020-01-16,还是会在2020-01-15里继续写 结论:写log的线程不停,文件不会按日子更换。

logback版本:1.1.11

这个是我实验验证的,昨天我配置了一个logback,然后用两个线程不断往里写log,结果发现到了今天2020-01-16日,log文件还是昨天的logbackCfg.log.2020-01-15.log,还在不断往里写。
追加内容
落霞与孤鹜齐飞
秋水共长天一色
滕王阁序 唐.王勃
2020-01-15 23:59:53.769 [main] INFO  logbackCfg.App -秦时明月汉时关
2020-01-15 23:59:53.769 [main] ERROR logbackCfg.App -万里长征人未还
2020-01-15 23:59:53.769 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-15 23:59:53.769 [main] TRACE logbackCfg.App -不教胡马度阴山
2020-01-15 23:59:56.969 [main] INFO  logbackCfg.App2 -九里山前作战场
2020-01-15 23:59:56.969 [main] ERROR logbackCfg.App2 -牧童拾得旧刀枪
2020-01-15 23:59:56.969 [main] DEBUG logbackCfg.App2 -微风吹皱乌江水
2020-01-15 23:59:56.969 [main] TRACE logbackCfg.App2 -恰似虞姬别霸王
追加内容
落霞与孤鹜齐飞
秋水共长天一色
滕王阁序 唐.王勃
2020-01-15 23:59:58.769 [main] INFO  logbackCfg.App -秦时明月汉时关
2020-01-15 23:59:58.769 [main] ERROR logbackCfg.App -万里长征人未还
2020-01-15 23:59:58.769 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-15 23:59:58.769 [main] TRACE logbackCfg.App -不教胡马度阴山
追加内容
落霞与孤鹜齐飞
秋水共长天一色
滕王阁序 唐.王勃
2020-01-16 00:00:03.770 [main] INFO  logbackCfg.App -秦时明月汉时关
2020-01-16 00:00:03.770 [main] ERROR logbackCfg.App -万里长征人未还
2020-01-16 00:00:03.770 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-16 00:00:03.770 [main] TRACE logbackCfg.App -不教胡马度阴山
2020-01-16 00:00:04.975 [main] INFO  logbackCfg.App2 -九里山前作战场
2020-01-16 00:00:04.975 [main] ERROR logbackCfg.App2 -牧童拾得旧刀枪
2020-01-16 00:00:04.975 [main] DEBUG logbackCfg.App2 -微风吹皱乌江水
2020-01-16 00:00:04.975 [main] TRACE logbackCfg.App2 -恰似虞姬别霸王
追加内容
落霞与孤鹜齐飞
秋水共长天一色
滕王阁序 唐.王勃
2020-01-16 00:00:08.772 [main] INFO  logbackCfg.App -秦时明月汉时关
2020-01-16 00:00:08.772 [main] ERROR logbackCfg.App -万里长征人未还
2020-01-16 00:00:08.772 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-16 00:00:08.772 [main] TRACE logbackCfg.App -不教胡马度阴山
追加内容
落霞与孤鹜齐飞
秋水共长天一色
滕王阁序 唐.王勃
2020-01-16 00:00:12.975 [main] INFO  logbackCfg.App2 -九里山前作战场
2020-01-16 00:00:12.975 [main] ERROR logbackCfg.App2 -牧童拾得旧刀枪
2020-01-16 00:00:12.975 [main] DEBUG logbackCfg.App2 -微风吹皱乌江水
2020-01-16 00:00:12.975 [main] TRACE logbackCfg.App2 -恰似虞姬别霸王
2020-01-16 00:00:13.777 [main] INFO  logbackCfg.App -秦时明月汉时关
2020-01-16 00:00:13.777 [main] ERROR logbackCfg.App -万里长征人未还
2020-01-16 00:00:13.777 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-16 00:00:13.777 [main] TRACE logbackCfg.App -不教胡马度阴山
追加内容
落霞与孤鹜齐飞
秋水共长天一色

从上面可以看出,过了零点还在往一个文件里写。

把线程停止再启动,log文件才换到2020-01-16,如下图:

结论就是:写log的线程不停,文件不会按日子更换。

下面是我用的logback.xml配置中写文件部分的节选:

<!-- Output to File -->
    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--log file pathname -->
            <FileNamePattern>${LOG_HOME}/logbackCfg.log.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!--days log files will be kept -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--%d:date,%thread:thread,%-5level:error/debug/info... %msg:message,%n:new line -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
        </encoder>
        <!--size -->
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

上面的红字部分就是文件名按日期更换的模式。

本实验用的程序下载:

 https://files.cnblogs.com/files/xiandedanteng/logbackCfg202001016-1.zip

原文地址:https://www.cnblogs.com/heyang78/p/12199523.html