2

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

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

为了调试问题,我们将其设置为在分钟而不是当天翻转。我们发现如果程序在从一分钟开始的几秒钟内被调用,文件就会翻转。如果在分钟结束后超过 5 秒被调用,则不会发生翻转。

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

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

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

4

3 回答 3

1

尝试 {

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

}

于 2012-02-22T15:30:02.193 回答
1

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

于 2012-03-13T23:47:07.350 回答
1

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

<?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">,否则它不会翻转(也不能StaticLogFileName像原始 log4j 那样识别参数)。

于 2016-06-23T06:36:43.273 回答