原文: https://howtodoinjava.com/log4j/log4j-rolling-file-appender/
Log4j RollingFileAppender
是OutputStreamAppender
,它按照有关何时发生滚动(备份)的已配置触发策略,将日志消息写入文件。 它还具有有关如何转换文件的已配置转换策略。
通常,日志文件的备份是根据文件大小和/或当前日期创建的。
1. Log4j Maven 依赖项
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2. RollingFileAppender
示例 – 基于日志文件大小的滚动
此给定的配置根据日志文件大小滚动日志文件。 我已将日志文件大小配置为 10 MB。 根据您的要求进行更改。
2.1. log4j.properties
我们可以按照给定的方式在log4j.properties
中配置滚动文件附加器。
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.File=${LOG_DIR}/application.log
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.rollingFile.MaxFileSize=10MB
log4j.appender.rollingFile.MaxBackupIndex=5
log4j.appender.rollingFile.append=true
log4j.rootCategory=ALL, rollingFile
2.2 log4j.xml
<appender name="rollingFile" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${LOG_DIR}/application.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="5" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n" />
</layout>
</appender>
3. RollingFileAppender
– 基于日期时间的滚动
我们也可以根据日期时间滚动日志文件。
3.1 RollingFileAppender
示例
如果使用RollingFileAppender
,则使用TimeBasedRollingPolicy
来指定何时基于日期时间滚动日志文件。
注意FileNamePattern
属性。 它定义了滚动文件的名称模式。 在给定的示例中,它将在日志文件名中使用date-month
重命名滚动日志文件。
例如,模式'{dd-MMM}'
将在一个月的每天中滚动日志文件。 同样,'{MM-dd-yyyy-HH}'
将每小时滚动一次。
我们还使用.gz
扩展名,因此 log4j 将自动压缩日志文件。
<appender name="rollingFile" class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="${LOG_DIR}/application.%d{dd-MMM}.log.gz" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n" />
</layout>
</appender>
3.2 DailyRollingFileAppender
示例
为了启用每日滚动,log4j 提供了DailyRollingFileAppender
,它扩展了FileAppender
。 如果要每天滚动日志文件,请直接使用它。
<appender name="rollingFile" class="org.apache.log4j.rolling.DailyRollingFileAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n" />
</layout>
</appender>
4. RollingFileAppender
– 基于日志大小和日期时间的滚动
如果要同时基于文件大小和日期时间来滚动日志文件,则需要同时使用SizeBasedTriggeringPolicy
和TimeBasedRollingPolicy
。
<appender name="rollingFile" class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy
class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="ActiveFileName" value="${LOG_DIR}/application.log" />
<param name="FileNamePattern" value="${LOG_DIR}/application.%d{dd-MMM}.log.gz" />
</rollingPolicy>
<triggeringPolicy
class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
<param name="MaxFileSize" value="10MB" />
</triggeringPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n" />
</layout>
</appender>
参考文献: