我有一个只在硬件触发时运行的应用程序。我们最近添加了log4cxx的遗留c ++应用程序,用于生成日志以帮助调试罕见的生产问题。我们当然想要每日日志文件。
事实证明我们从来没有滚动文件。
要调试问题,我们将其设置为在分钟而非当天滚动。我们发现如果程序是在一分钟之内从几分钟内调用的,那么文件就会翻转。如果在分钟的顶部超过5秒后调用它,则不会发生翻转。
在测试中,程序运行大约需要5秒钟。
如果需要,程序启动时是否有log4翻转文件?
即。如果我们在第6分钟记录,然后在第50分钟之前再次运行,我们将在开始记录第50分钟之前翻转日志文件,而不是仅仅追加到第6分钟。
答案 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),所以我最终使用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>
点不指定<param name="file">
或者它不会翻转(它也不会识别原始log4j中的StaticLogFileName
参数)。