1

我有一个配置为...

<appender name="DAILY_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <File>logs/dm.log</File>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <FileNamePattern>logs/dm.%d{yyyyMMdd}.log</FileNamePattern>
  </rollingPolicy>
  <encoder>
    <pattern>%m%n</pattern>
  </encoder>
</appender>
...
<root level="info">
  <appender-ref ref="DAILY_ROLLING" />
  <appender-ref ref="SYSLOG" />
</root>

...这通常具有将当前数据记录到 dm.log 文件的效果,并且每天午夜将 dm.log 滚动到一个以日期命名的文件中,dm.20130205.log。然而,昨天第一次没有发生这种翻转。我的 dm.log 文件现在有 2 天的数据,我想知道出了什么问题?我希望在 dm.log 文件中找到 RolloverFailure 或一些错误指示,但那里什么也没有。

我在哪里可以找出 logback 出了什么问题?我从未见过这种机制在 logback 或 log4j 中失败。

4

1 回答 1

1

尝试添加:

-Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener

或者实现您自己的状态监听器的事件。然后尝试在测试系统中每 10 秒配置一次文件滚动,然后让它进行浸泡测试。

很可能是 NAS 问题。我们的 NAS 以难以察觉的方式悄无声息地失败了。此外,如果文件滚入是在半夜,并且它是一个夜间批处理系统,那么此时 NAS 负载可能会很高。

您使用的是什么版本的 logback?

编辑:如果文件重命名失败,则可以跳过翻转。在我自己的代码中,我会重试,但在 RenameUtil.rename() 中,logback 只会通过状态监听器警告你。

于 2013-02-18T15:43:01.250 回答