log4j2每月日志翻转

时间:2013-09-03 14:06:13

标签: java logging log4j2

我正在使用Log4J 2.0为我正在做的项目创建日志。日志很小,我需要维护它们3个月。我希望当前月份的日志包含3个档案(每个档案包含一个月的日志)。

我需要帮助的问题是配置log4j以在月初(或月末)轮换日志。

我发现研究这个问题的每件事都是针对log4j 1.x并讨论了一个似乎不存在于2.0中的datePattern参数。

这是我的log4j2.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn" name="NKMS" packages="">
    <appenders>
        <FastRollingFile name="LogFile" fileName="logs/Tier2HttpServer.log" filePattern="logs/app-%d{yyyy-MM-dd}.log.gz">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="4"/>
        </FastRollingFile>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </Console>
    </appenders>
    <loggers>
        <logger name="mil.navy.nrl.itd.xml_filter" level="trace"/>
        <root level="trace">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="LogFile"/>
        </root>
    </loggers>
</configuration>

我正在将INFO及以上内容写入日志文件并调试到控制台(暂时)。文件写得很好,但它们似乎每天翻转(这似乎是默认值)。

我尝试将FastRollingFile:filePattern更改为“'。'yyyy-MM”,但这会导致奇怪的事情发生(只有一个条目写入文件并立即创建存档)。

我下载了log4j-2.0-beta8的源代码,而PatternProcessor解析了包含枚举RolloverFrequency.MONTHLY的RolloverFrequency,但又一次,我无法弄清楚如何实现/使用它。

与往常一样,您可以提供的任何帮助或建议都会非常受欢迎!

-Ace

1 个答案:

答案 0 :(得分:0)

您可能发现了一个错误。我希望"logs/app-%d{yyyy-MM}.log.gz"的filePattern能够为您提供所需的内容。

澄清我对问题的理解:初始日志事件会立即触发翻转(创建存档文件)。相反,它应该将日志事件收集到日志文件中,并且不会翻转直到月末/月末。这种描述是否正确?除了这个初始的不必要的翻转之外还有其他问题吗?

我可以请你为此提出JIRA票吗? https://issues.apache.org/jira/browse/LOG4J2