Log4j2 RollingFileAppender 使用详解
教程分享
>
Java教程
(2783)
2023-03-28 11:29:14
概述
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中配置RollingFileAppender 。
$title(log4j.properties)
name = PropertiesConfig
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${LOG_DIR}/application.log
appender.rolling.filePattern = ${LOG_DIR}/application.%d{dd-MMM}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 5
logger.rolling.name = rollingFile
logger.rolling.level = debug
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = RollingFile
2.2. log4j2.xml 配置
$title(log4j2.xml)
<RollingFile
name="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将自动压缩日志文件。
$title(log4j2.xml)
<RollingFile
name="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不提供早期log4j中存在的DailyRollingFileAppender。 要每天滚动日志,请在TimeBasedTriggeringPolicy中将时间间隔设置为1。
$title(log4j2.xml)
<RollingFile
name="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 interval="1"/>
</Policies>
<DefaultRolloverStrategy max="5" />
</RollingFile>
4. RollingFileAppender –基于日志大小和日期时间的滚动
如果要同时基于文件大小和日期时间来翻转日志文件,则需要同时使用SizeBasedTriggeringPolicy和TimeBasedRollingPolicy。
在给定的示例中,appender可以使用包含{dd-MMM}的filePattern属性来引用文件名模式和基于时间的过渡策略。 基于大小的过渡将发生在10 MB。
$title(log4j2.xml)
<RollingFile
name="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>
https://www.leftso.com/article/803.html