Log4j2 RollingFileAppender 使用详解

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(1573)   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

相关阅读

概述       Log4j2 RollingFileAppender是一个OutputStreamAppender,它遵循有关何时应进行滚动(备份)的已配置触发策略,将日志消息写入文件
log4j使用,log4j框架在java编程中还是比较常见的,这里将会讲解通过log4j2的LevelRangeFilter将不同级别log存放不同文件中。
这个Log4j2示例将帮助您使用HTMLLayout配置log4j2.xml文件
简介       Apache Log4j2是对Log4j 1.x的升级,在性能上进行了重大改进,改进了配置文件的自动重装,Java 8 lambda支持和自定义日志级别,从而对Log4j 1....
Log4j 2 简介       Apache Log4j 2是对Log4j 1.x的升级,相对于其先前版本进行了重大改进,例如性能改进,自动重新加载已修改的配置文件,java 8 lambda...
概述       学习配置log4j2.properties文件以将日志语句输出到控制台,滚动文件等
概述下面的log4j2转换模式仅供参考,这样您和我就不会在每次创建/编辑log4j配置文件时浪费时间来构建这些模式
ConsoleAppender概述       Log4j2 ConsoleAppender将应用程序生成的日志事件附加到System.out或System.err中
概述给定log4j2.xml是配置configure multiple appenders(例如控制台附加程序和文件附加程序)的参考
Java编程之Spring Boot 使用SLF4J Logging,spring boot,SLF4J