我有一个log4j2 xml文件附加程序,该附加程序可以正常工作,并且每分钟都会回滚文件。我对代码进行了一些调整,尝试将回滚更改为每天一次,但现在不起作用。我想念什么?
这是旧的XML文件附加器(有效的附加器):
<!-- Rolling File Appenders -->
<RollingFile name="RollingFile" fileName=".\logs\log${date:yyyyMMdd}.log"
filePattern=".\logs\oldLogs\log_%d{yyyyMMdd-HHmm}.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %-3level %logger{36} - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="3">
<Delete basePath=".\logs\oldLogs" maxDepth="2">
<IfAccumulatedFileCount exceeds="3" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
这是每天滚动的新功能(无效):
<!-- Rolling File Appenders -->
<RollingFile name="RollingFile" fileName=".\logs\log${date:yyyyMMdd}.log"
filePattern=".\logs\oldLogs\log_%d{yyyyMMdd}.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %-3level %logger{36} - %msg%n" />
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy max="10">
<Delete basePath=".\logs\oldLogs" maxDepth="2">
<IfAccumulatedFileCount exceeds="10"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
编辑: 我期望的行为: 〜将每天生成日志并将前一天的日志存储在此文件夹中:“。\ logs \ oldLogs \” 〜仅保留10条最新日志,并删除较旧的日志
当前行为: 〜每天生成日志,但是到明天为止,不会将文件滚动到以下文件夹:“。\ logs \ oldLogs \” 〜不删除任何日志文件
答案 0 :(得分:0)
我认为最简单的解决方案是将fileName
的{{1}}属性设为常量。最近的日志将始终包含在此文件中,因此我真的没有看到有必要在文件名上加上日期。日志存档后,日期将按照RollingFile
添加到文件名中。
此外,您可以删除filePattern
的{{1}}和OnStartupTriggeringPolicy
属性。 max
属性与RollingFileAppender DefaultRolloverStrategy
参数的描述中提到的“整数计数器”一起使用,由于您未使用该计数器,因此max
将无济于事你。
我相信这应该对您有用:
filePattern