原文: https://howtodoinjava.com/log4j2/log4j2-rollingfileappender-example/
Log4j2 RollingFileAppender是OutputStreamAppender,它按照有关何时应进行滚动(备份)的已配置触发策略,将日志消息写入文件。 它还具有有关如何转换文件的已配置转换策略。
通常,日志文件的备份是根据文件大小和/或当前日期创建的。
1. Log4j2 Maven 依赖项
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.11.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.11.1</version></dependency>
在 maven 仓库中检查最新版本。
2. Log4j2 RollingFileAppender示例 – 基于日志文件大小的滚动
此给定的配置根据日志文件大小滚动日志文件。 我已将日志文件大小配置为 10 MB。 根据您的要求进行更改。
2.1. log4j2.properties
我们可以按照给定的方式在log4j.properties中配置滚动文件附加器。
name = PropertiesConfigappender.rolling.type = RollingFileappender.rolling.name = RollingFileappender.rolling.fileName = ${LOG_DIR}/application.logappender.rolling.filePattern = ${LOG_DIR}/application.%d{dd-MMM}.log.gzappender.rolling.layout.type = PatternLayoutappender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %m%nappender.rolling.policies.type = Policiesappender.rolling.policies.size.type = SizeBasedTriggeringPolicyappender.rolling.policies.size.size=10MBappender.rolling.strategy.type = DefaultRolloverStrategyappender.rolling.strategy.max = 5logger.rolling.name = rollingFilelogger.rolling.level = debuglogger.rolling.additivity = falselogger.rolling.appenderRef.rolling.ref = RollingFile
2.2 log4j2.xml
<RollingFilename="rollingFile"fileName="${LOG_DIR}/application.log"filePattern="${LOG_DIR}/application.%i.log.gz"ignoreExceptions="false"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern></PatternLayout><Policies><SizeBasedTriggeringPolicy size="10MB" /></Policies><DefaultRolloverStrategy max="5" /></RollingFile>
3. RollingFileAppender – 基于日期时间的滚动
我们也可以根据日期时间滚动日志文件。
3.1 RollingFileAppender示例
如果使用RollingFileAppender,则使用TimeBasedRollingPolicy来指定何时基于日期时间滚动日志文件。
注意FileNamePattern属性。 它定义了滚动文件的名称模式。 在给定的示例中,它将在日志文件名中使用date-month重命名滚动日志文件。
例如,模式'{MM-dd-yyyy-HH}'将每小时滚动日志文件。
我们还使用.gz扩展名,因此 log4j 将自动压缩日志文件。
<RollingFilename="rollingFile"fileName="${LOG_DIR}/application.log"filePattern="${LOG_DIR}/application.%d{dd-MMM}.log.gz"ignoreExceptions="false"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern></PatternLayout><Policies><TimeBasedTriggeringPolicy filePattern="${LOG_DIR}/application.%d{dd-MMM-hh}.log.gz" /></Policies><DefaultRolloverStrategy max="5" /></RollingFile>
3.2 每日滚动日志示例
为了启用每日滚动,log4j2 没有DailyRollingFileAppender,这是较早的 log4j 中存在的。 要每天滚动日志,请在TimeBasedTriggeringPolicy中将时间间隔设置为 1。
<RollingFilename="rollingFile"fileName="${LOG_DIR}/application.log"ignoreExceptions="false"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern></PatternLayout><Policies><TimeBasedTriggeringPolicy interval="1"/></Policies><DefaultRolloverStrategy max="5" /></RollingFile>
4. RollingFileAppender – 基于日志大小和日期时间的滚动
如果要同时基于文件大小和日期时间来滚动日志文件,则需要同时使用SizeBasedTriggeringPolicy和TimeBasedRollingPolicy。
在给定的示例中,附加器可以使用包含{dd-MMM}的filePattern属性引用文件名模式和基于时间的滚动策略。 基于大小的滚动将发生在 10 MB。
<RollingFilename="rollingFile"fileName="${LOG_DIR}/application.log"filePattern="${LOG_DIR}/application.%d{dd-MMM}.log.gz"ignoreExceptions="false"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern></PatternLayout><Policies><OnStartupTriggeringPolicy /><SizeBasedTriggeringPolicy size="10 MB" /><TimeBasedTriggeringPolicy /></Policies><DefaultRolloverStrategy max="5" /></RollingFile>
学习愉快!
参考文献:
