我有一个 logback.xml 文件,其中定义了轮换:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${user.dir}/servers/${weblogic.Name}/logs/XYX.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${user.dir}/servers/${weblogic.Name}/logs/XYX.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date %-3.-3level %replace(%replace(%-28.-28thread){'ExecuteThread: ','th='}){'ACTIVE','A'} | [%X{facadeType} - %X{processId}] | %logger{10} [%file:%line] --> %msg%n</pattern>
</encoder>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="FILE"/>
</root>
我认为这里的语法很好,因为可以说它运作良好。问题是有时 logback 开始记录到一个完全随机的文件,一个以前创建的文件。
例如:今天是 2023 年 8 月 23 日,在 11:03 开始记录到 2023 年 8 月 10 日创建的日志文件,并在 16:04 恢复记录到正确的位置。或者看下图中框出的部分:
有时它会在几个小时内记录到错误的位置,这种情况并不经常发生,但我没有看到这些事件之间有任何相关性,这似乎完全是随机的。