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

相关文章
概述       Log4j2 RollingFileAppender是一个OutputStreamAppender,它遵循有关何时应进行滚动(备份)的已配置触发策略,将日志消息写入文件
log4j使用,log4j框架在java编程中还是比较常见的,这里将会讲解通过log4j2的LevelRangeFilter将不同级别log存放不同文件中。
这个Log4j2示例将帮助您使用HTMLLayout配置log4j2.xml文件
简介       Apache Log4j2是对Log4j 1.x的升级,在性能上进行了重大改进,改进了配置文件的自动重装,Java 8 lambda支持和自定义日志级别,从而对Log4j 1....
概述       学习配置log4j2.properties文件以将日志语句输出到控制台,滚动文件等
概述下面的log4j2转换模式仅供参考,这样您和我就不会在每次创建/编辑log4j配置文件时浪费时间来构建这些模式
ConsoleAppender概述       Log4j2 ConsoleAppender将应用程序生成的日志事件附加到System.out或System.err中
概述给定log4j2.xml是配置configure multiple appenders(例如控制台附加程序和文件附加程序)的参考
Java编程之Spring Boot 使用SLF4J Logging,spring boot,SLF4J
概述了解如何使用log4j LevelRangeFilter过滤器,如果LogEvent中的级别在配置的最小和最大级别范围内,则返回onMatch结果,否则返回onMismatch值
概述       Log4j2 ThreadContext允许您使用多个唯一的标签标记日志语句,以分析日志,同时在运行时诊断问题-主要是在多线程应用程序中,其中应用程序会在短时间内生成大量日志
前言任何框架使用都是需要日志框架的,方便排查问题和记录一些重要信息,本文主要讲解vert.x4 结合logback日志。 引入依赖maven pom.xml&lt;d
modbus tcp 通讯协议在Java编程中的使用。本文主要讲解Java编程中通过modbus4j工具类来实现modbus tcp通讯协议的通讯。包括通过modbus协议读取数据,写入数据的实现。
Spring Boot 2.0 入门 logoback配置实战教程,俗话说好马配好鞍。Spring Boot 框架从各方面给我们带来了开发效率。日志自然也不会落下。本文将讲解与Spring Bo...
本文章主要简单讲解目前流行的springMVC4+Spring4+MyBatis3(即SSM)框架整合