原文: 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.RollingFileAppenderlog4j.appender.rollingFile.File=${LOG_DIR}/application.loglog4j.appender.rollingFile.layout=org.apache.log4j.PatternLayoutlog4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%nlog4j.appender.rollingFile.MaxFileSize=10MBlog4j.appender.rollingFile.MaxBackupIndex=5log4j.appender.rollingFile.append=truelog4j.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"><rollingPolicyclass="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><triggeringPolicyclass="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>
参考文献:
