1

我正在使用 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,但同样,我不知道如何实现/使用它。

与往常一样,您可以提供的任何帮助或建议将不胜感激!

-高手

4

1 回答 1

0

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

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

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

于 2013-09-04T00:43:19.687 回答