在log4j中配置日志輪換時,可以通過設置RollingFileAppender
的滾動策略來避免日志丟失或重復記錄的問題。以下是一個示例配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1} - %m%n</pattern>
</PatternLayout>
<Policies>
<!-- 每天滾動一次 -->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<!-- 最多保留30天的日志文件 -->
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
在這個配置中,我們使用了TimeBasedTriggeringPolicy
和SizeBasedTriggeringPolicy
兩種滾動策略。TimeBasedTriggeringPolicy
按時間間隔滾動日志文件,而SizeBasedTriggeringPolicy
則根據日志文件大小進行滾動。同時,我們還設置了DefaultRolloverStrategy
的最大滾動次數,以避免過多的日志文件。這樣可以確保日志不會丟失,也不會重復記錄。