我正在使用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
答案 0 :(得分:0)
您可能发现了一个错误。我希望"logs/app-%d{yyyy-MM}.log.gz"
的filePattern能够为您提供所需的内容。
澄清我对问题的理解:初始日志事件会立即触发翻转(创建存档文件)。相反,它应该将日志事件收集到日志文件中,并且不会翻转直到月末/月末。这种描述是否正确?除了这个初始的不必要的翻转之外还有其他问题吗?
我可以请你为此提出JIRA票吗? https://issues.apache.org/jira/browse/LOG4J2