0

我正在使用以下 log4j2.xml 文件:

<configuration>
    <appenders>
        <RollingFile name="logfile" fileName="C:/opt/log/views/views.log"
                     filePattern="C:/opt/log/views/views.%d{yyyy-ww}.log.gz">
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
            <DefaultRolloverStrategy max="3" />
            <PatternLayout pattern="%d{ISO8601} VIEWS[%p][%c]...." />
        </RollingFile>
    </appenders>
    <loggers>
        <root level="TRACE">
            <appender-ref ref="logfile" />
        </root>
    </loggers>
</configuration>

当我尾随文件并启动服务器时,我一次收到一条日志消息。它不是附加的,而是用每个新行替换文件中的唯一行。我对此有点困惑,希望有人以前见过。提前致谢。

4

2 回答 2

1

据我所知,您的配置没有任何问题(至少,在我的机器上它按预期工作)。

也许问题出在模式中:

%d{ISO8601} VIEWS[%p][%c]....

您最后错过了一个%n(换行符),因此所有内容都有效地写在同一行上。

于 2013-03-04T21:09:12.143 回答
0

花了一些时间来解决完全相同的问题。我现在确信 log4j2 (beta9) 中的 TimeBasedTriggeringPolicy 可以处理的最大时间单位是一天,而不是(如您的配置中的)一周或一个月。

测试它:将您的配置更改为

 <RollingFile name="logfile" fileName="C:/opt/log/views/views.log"
     filePattern="C:/opt/log/views/views.%d{yyyy-MM-dd}.log.gz">

它应该神奇地起作用。

这已在此处报告为错误,但(截至今天)尚未修复:https ://issues.apache.org/jira/browse/LOG4J2-385

于 2013-10-28T22:31:21.287 回答