我试图配置一个RollingFile appender,它在每个月(18个月)之后执行翻转。但是,我希望log4j2覆盖当前日志,如果它达到25 MB。例如,如果我们目前在二月,那么我将有一月份的先前日志。但是,如果我当前的2月日志将达到25 MB,则我的2月日志将被2月的新日志覆盖。这是我目前的appender配置:
<RollingFile name="audit-log" fileName="${sys:user.dir}/${baseDir}/${projectName}-Audit.log" immediateFlush="true" filePattern="${sys:user.dir}/${baseDir}/${projectName}-Audit.%d{yyyy-MM}.log">
<PatternLayout pattern="%d %-5level: %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="25 MB"/>
</Policies>
<DefaultRolloverStrategy max="18"/>
</RollingFile>
然而,无论我是否已切换月份或达到25 MB大小限制,这都会延续。如何在切换月份之后才能使日志滚动,但是在达到大小限制后是否会覆盖当前日志?
谢谢!
答案 0 :(得分:0)
我能够使用以下配置解决这个问题:
<RollingFile name="audit-log" fileName="${sys:user.dir}/${baseDir}/${projectName}-Audit.log" immediateFlush="true" filePattern="${sys:user.dir}/${baseDir}/${projectName}-Audit.%d{yyyy-MM}.log">
<PatternLayout pattern="%d %-5level: %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="25 MB"/>
</Policies>
<DefaultRolloverStrategy max="1">
<Delete basePath="${baseDir}">
<IfAccumulatedFileCount exceeds="18" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>