Log4cxx DailyRollingFileAppender没有滚动

时间:2012-02-17 17:13:38

标签: visual-c++ log4cxx

我有一个只在硬件触发时运行的应用程序。我们最近添加了log4cxx的遗留c ++应用程序,用于生成日志以帮助调试罕见的生产问题。我们当然想要每日日志文件。

事实证明我们从来没有滚动文件。

要调试问题,我们将其设置为在分钟而非当天滚动。我们发现如果程序是在一分钟之内从几分钟内调用的,那么文件就会翻转。如果在分钟的顶部超过5秒后调用它,则不会发生翻转。

在测试中,程序运行大约需要5秒钟。

如果需要,程序启动时是否有log4翻转文件?

即。如果我们在第6分钟记录,然后在第50分钟之前再次运行,我们将在开始记录第50分钟之前翻转日志文件,而不是仅仅追加到第6分钟。

3 个答案:

答案 0 :(得分:1)

结果是log4cxx实现中的一个错误。 :(

答案 1 :(得分:0)

尝试{

log4j.rootLogger=debug, R

# Pattern to output the caller's file name and line number.

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.DatePattern=test-%Y-%m-%d.log

}

答案 2 :(得分:0)

DailyRollingFileAppender在我的情况下也不起作用(在log4cxx 0.10.0),所以我最终使用RollingFileAppenderTimeBasedRollingPolicy

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="roll" class="org.apache.log4j.rolling.RollingFileAppender">
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
      <param name="FileNamePattern" value="roll.%d{yyyy-MM-dd}.log"/>
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%p %t %c - %m%n"/>
    </layout>
    <param name="Append" value="true"/>
  </appender>
  <root>
    <priority value="ALL"/>
    <appender-ref ref="roll"/>
  </root>
</log4j:configuration>

指定<param name="file">或者它不会翻转(它也不会识别原始log4j中的StaticLogFileName参数)。