多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Log4j`RollingFileAppender`配置示例 > 原文: [https://howtodoinjava.com/log4j/log4j-rolling-file-appender/](https://howtodoinjava.com/log4j/log4j-rolling-file-appender/) [Log4j](https://howtodoinjava.com/log4j/) `RollingFileAppender`是`OutputStreamAppender`,它按照有关何时发生滚动(备份)的已配置触发策略,将日志消息写入文件。 它还具有有关如何转换文件的已配置转换策略。 通常,日志文件的备份是根据文件大小和/或当前日期创建的。 ## 1\. Log4j Maven 依赖项 ```java <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ``` ## 2\. `RollingFileAppender`示例 – 基于日志文件大小的滚动 此给定的配置根据日志文件大小滚动日志文件。 我已将日志文件大小配置为 10 MB。 根据您的要求进行更改。 #### 2.1\. `log4j.properties` 我们可以按照给定的方式在`log4j.properties`中配置滚动文件附加器。 ```java 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` ```java <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 将**自动压缩日志文件**。 ```java <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`。 如果要每天滚动日志文件,请直接使用它。 ```java <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`。 ```java <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> ``` 参考文献: [Log4j `RollingFileAppender` Java 文档](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/RollingFileAppender.html)