spring boot 配置log4j2

刚入职新公司,接到的第一个需求就是把项目的log4j 1.x 升级到2.x。之前没有做过日志配置,都是直接拿来用的,这是第一次自己配置日志文件,所以记录下相关知识点。

1、排除1.0的jar包

首先排查项目中log的版本,把1.0相关的版本都要排除掉(这里推荐一个idea的插件,Maven Helper 辅助我们分析jar的依赖关系,对于解决jar冲突有很大的帮助)

通过插件找到了log4j目前的版本1.2.17,我们选中右键跳转到jar包的依赖树,再一次选中右键点击Exclude,排除掉jar包。

2、引入2.0的jar包

这里我使用的是springboot 自带的log4j2的jar

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

 一般starter的版本号都会在当前项目使用的springboot的dependencies里面有默认版本配置

 如果说我们想自定义log4j2的版本号,我们可以在pom文件里面直接制定版本号

<log4j2.version>2.15.0</log4j2.version>

如下: 

这样我们就能发现我们项目引入的log4j2的版本都变成了2.15.0,这也是前些日子解决log4j漏洞最简单的办法

3、配置log4j2.xml

一般的log4j2.xml都在resources目录下面。如果想自己指定目录,需要在配置文件中使用logging.config:来指定目录

可以看下xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" Strict="true" name="XMLConfigTest">
    <Properties>
        <Property name="filepath">../logs</Property>
        <Property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS}  %X{logger_id} %5p %c{1}:%M:%L - %msg%n</Property>
        <Property name="log_count">14</Property>
    </Properties>
    <!-- 先定义所有的appender -->
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="${log_pattern}" />
        </Console>
        <RollingRandomAccessFile name="RollingRandomAccessFileInfo"
                                 fileName="${filepath}/info.log"
                                 filePattern="${filepath}/info.log.%d{yyyy-MM-dd}">
            <Filters>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认同一文件夹下最多保存7个文件-->
            <DefaultRolloverStrategy max="${log_count}"/>
        </RollingRandomAccessFile>
        <RollingRandomAccessFile name="RollingRandomAccessFileError"
                                 fileName="${filepath}/error.log"
                                 filePattern="${filepath}/error.log.%d{yyyy-MM-dd}">
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认同一文件夹下最多保存7个文件-->
            <DefaultRolloverStrategy max="${log_count}"/>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <AsyncRoot level="INFO" includeLocation="true" additivity="false">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingRandomAccessFileInfo" />
            <AppenderRef ref="RollingRandomAccessFileError" />
        </AsyncRoot>
    </Loggers>
</Configuration>

 4、xml配置项解析

1. monitorInterval,配置的为120,单位为秒。即在服务运行过程中发生了log4j2配置文件的修改,log4j2能够在monitorInterval时间范围重新加载配置,无需重启应用。

2. property配置文件全局属性的声明,使用方式为:${声明的属性名称}。

3. RollingRandomAccessFile基本属性

    name:Appender名称

    immediateFlush:log4j2接收到日志事件时,是否立即将日志刷到磁盘。默认为true。

    fileName:日志存储路径

    filePattern:历史日志封存路径。其中%d{yyyyMMddHH}表示了封存历史日志的时间单位(目前单位为小时,yyyy表示年,MM表示月,dd表示天,HH表示小时,mm表示分钟,ss表示秒,SS表示毫秒)

4. TimeBasedTriggeringPolicy

interval:表示历史日志封存间隔时间,单位为filePattern设置的单位值

5. ThresholdFilter

     level,表示最低接受的日志级别,博客配置的为INFO,打印INFO级别以上的日志。

       

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot支持多种日志框架,其中就包括log4j。将log4j配置Spring Boot中需要以下步骤: 1. 在pom.xml文件中添加log4j的依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> </dependency> ``` 2. 在src/main/resources目录下创建log4j.properties文件,然后在该文件中添加log4j的配置信息。例如: ``` # 设置日志级别为DEBUG log4j.rootLogger=DEBUG, console # 定义输出到控制台的appender log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n ``` 3. 在Spring Boot配置文件application.properties或application.yml中,设置logging.config属性的值为log4j.properties文件的路径。例如: application.properties ``` logging.config=classpath:log4j.properties ``` application.yml ``` logging: config: classpath:log4j.properties ``` 4. 在Spring Boot应用程序中使用日志。例如: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyClass { private static final Logger logger = LoggerFactory.getLogger(MyClass.class); public void doSomething() { logger.debug("This is a debug message"); logger.info("This is an info message"); logger.warn("This is a warn message"); logger.error("This is an error message"); } } ``` 以上就是在Spring Boot配置log4j.properties的完整步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值