Log4j2 RollingFileAppender 使用详解

Log4j2 RollingFileAppender 使用详解

概述

       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>
Log4j2 RollingFileAppender 使用详解

相关文章:

你感兴趣的文章:

标签云: