滚动时,TimeBasedRollingPolicy做奇怪的事情

时间:2020-02-27 09:08:32

标签: java logback

我有一个在码头9.4.20下运行的webapp。我已经启用了Logback模块并为resources/logback.xml配置了以下滚动策略:

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  <fileNamePattern>logs/%d{yyyy-MM,aux}/my-webapp-%d{dd-MM-yyyy}.log</fileNamePattern>
</rollingPolicy>

这基本上可以用,但是模式很奇怪。大多数情况下,滚动是正确的,所以我将拥有文件my-webapp-12-01-2020.log,其最后访问时间为1月12日23:59。但是,某些文件滚动错误。例如,文件my-webapp-08-01-2020.log的最后访问时间为1月10日23:59,并且仅包含1月10日之后的条目。 1月8日起的日志到哪里去了?好吧...它们当然位于my-webapp-02-01-2020.log中,它具有1月8日23:59的访问权限,并且确实包含1月8日的所有日志条目。 1月2日起的日志条目在哪里?它们无处可寻(只是为了确定grep所有日志文件)。每个月都会针对多个日志文件发生这种混淆,并且每个月都有不同的日子。

如何弄清楚为什么会这样?

此文件在AWS EC2节点上运行,并且已同步UTC时间。乱码的日期似乎与Jetty重启无关(即,乱码的日期包括Jetty不带重启就运行的天数)。

Jetty 9.4.20具有登录功能,意味着logbackcore-1.2.3logback-classic-1.2.3slf4j-api-1.7.25

编辑:我已启用调试功能,启动看起来不错

Feb 27 13:49:50 c.q.l.core.rolling.TimeBasedRollingPolicy@1310167355 - No compression will be used
Feb 27 13:49:50 c.q.l.core.rolling.TimeBasedRollingPolicy@1310167355 - Will use the pattern logs /%d{yyyy-MM,aux}/my-webapp-%d{dd-MM-yyyy}.log for the active file
Feb 27 13:49:50 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'dd-MM-yyyy' from file name pattern 'logs/%d{yyyy-MM,aux}/my-webapp-%d{dd-MM-yyyy}.log'.
Feb 27 13:49:50 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
Feb 27 13:49:50 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Thu Feb 27 13:49:49 UTC 2020
Feb 27 13:49:50 ch.qos.logback.core.rolling.RollingFileAppender[log] - Active log file name: logs/my-webapp.log
Feb 27 13:49:50 ch.qos.logback.core.rolling.RollingFileAppender[log] - File property is set to [logs/my-webapp.log]

然后有一个打middle的打that发生在一天的中途,但几天后一切正常:

Feb 28 00:00:03 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Elapsed period: Thu Feb 27 13:49:49 UTC 2020
Feb 28 00:00:03 c.q.l.co.rolling.helper.RenameUtil - Renaming file [logs/my-webapp.log] to [logs/2020-02/my-webapp-27-02-2020.log]
Feb 28 10:59:45 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Elapsed period: Thu Feb 27 13:42:58 UTC 2020
Feb 28 10:59:45 c.q.l.co.rolling.helper.RenameUtil - Renaming file [logs/my-webapp.log] to [logs/2020-02/my-webapp-27-02-2020.log]
Feb 29 00:00:07 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Elapsed period: Fri Feb 28 00:00:03 UTC 2020
Feb 29 00:00:07 c.q.l.co.rolling.helper.RenameUtil - Renaming file [logs/my-webapp.log] to [logs/2020-02/my-webapp-28-02-2020.log]

...然后出现问题。关于发生时间和目标文件名是什么,可以在午夜进行第一次翻转。以下两个是完全错误的:错误的过渡时间和目标文件名:

Mar  5 00:00:20 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Elapsed period: Wed Mar 04 00:00:16 UTC 2020
Mar  5 00:00:20 c.q.l.co.rolling.helper.RenameUtil - Renaming file [logs/my-webapp.log] to [logs/2020-03/my-webapp-04-03-2020.log]
Mar  5 09:15:11 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Elapsed period: Tue Feb 18 09:18:24 UTC 2020
Mar  5 09:15:11 c.q.l.co.rolling.helper.RenameUtil - Renaming file [logs/my-webapp.log] to [logs/2020-02/my-webapp-18-02-2020.log]
Mar  5 09:59:45 c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Elapsed period: Fri Feb 28 10:59:45 UTC 2020
Mar  5 09:59:45 c.q.l.co.rolling.helper.RenameUtil - Renaming file [logs/my-webapp.log] to [logs/2020-02/my-webapp-28-02-2020.log]

我已经开始研究源代码,以找出导致这种奇怪行为的原因。

0 个答案:

没有答案
相关问题