Log4cxx DailyRollingFileAppender 未滚动

问题描述 投票:0回答:3

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

事实证明我们从未获得过滚动文件。

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

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

如果需要的话,是否可以在程序启动时让 log4 翻转文件?

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

visual-c++ log4cxx
3个回答
2
投票

DailyRollingFileAppender
在我的情况下也不起作用(在log4cxx 0.10.0),所以我最终使用
RollingFileAppender
加上
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>

点是 not 来指定

<param name="file">
否则它不会滚动(而且它也无法识别原始 log4j 中的
StaticLogFileName
参数)。


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

}


© www.soinside.com 2019 - 2024. All rights reserved.