【问题标题】:log4j2 monthly log rolloverlog4j2 每月日志翻转
【发布时间】:2013-09-06 19:30:12
【问题描述】:

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

与往常一样,非常感谢您提供的任何帮助或建议!

-王牌

【问题讨论】:

    标签: java logging log4j2


    【解决方案1】:

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

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

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

    【讨论】:

    • 没错。立即创建存档。此外,仅在新创建的日志中输入一个条目,并且日志收集停止。如果我重新启动应用程序,则会重复相同的过程。
    • 已创建 JIRA 票证。我的第一个,所以我希望我做对了。 :) issues.apache.org/jira/browse/LOG4J2-385
    • 这是一个 Log4J 2.0 beta8 错误。上面的 filePattern 确实应该导致日志每月滚动一次。
    猜你喜欢
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    相关资源
    最近更新 更多