查看原文
其他

Spring Boot 2.x中如何使用Log4j2记录日志

DD 程序猿DD 2022-03-16
前沿技术早知道,弯道超车有希望
积累超车资本,从关注DD开始

上一篇我们介绍了Spring Boot 2.x中默认日志框架Logback的使用。今天继续说说日志,接下来我们要讲是前段时间爆出核弹漏洞的Log4j2。虽然出了漏洞,让很多小伙伴痛苦了1-2周(加班),但不可否认的是Log4j2依然是目前性能最好的日志框架。所以,当Logback性能上无法支撑的时候,替换使用Log4j2还是最为快速便捷的方法。下面,我们就来学习一下如何在Spring Boot 2.x版本中,替换Logback,使用Log4j2记录日志。

动手试一试

这里省略Spring Boot项目的基础创建,如果您还不会可以看本教程的快速入门

下面的操作你可以基于Spring Boot 2.x中默认日志框架Logback一文的例子继续下去,也可以用任何一个Spring Boot 2.x的项目来尝试。

第一步:在pom.xml中引入Log4j2的Starter依赖spring-boot-starter-log4j2,同时排除默认引入的spring-boot-starter-logging,比如下面这样:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

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

第二步:在配置文件application.properties中,通过logging.config配置指定log4j2的配置文件位置,比如下面这样:

logging.config=classpath:log4j2.xml

第三步:在resource目录下新建log4j2.xml(这里不绝对,根据第二步中配置的内容来创建),然后加入log4j2的日志配置,比如,下面这样:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

主要是方便大家理解如何把log4j2引入Spring Boot,对于log4j2如何配置这里不做详细介绍,所以这里就放个简单配置让程序跑起来即可。如果想深入了解log4j2的配置:https://logging.apache.org/log4j/2.x/manual/configuration.html

OK,到这里整合过程就结束了。是不是很简单呢?如果您学习过程中如遇困难?可以加入我们超高质量的Spring技术交流群,参与交流与讨论,更好的学习与进步!更多Spring Boot教程博客 http://blog.didispace.com,欢迎收藏与转发支持!

常见问题

可能有小伙伴会问,之前不是推荐大家用Slf4j来记录日志,隔离了具体实现的日志框架么?那我怎么知道这一顿操作之后,真的已经用上Log4j2了呢?

这个其实很好判断,大家只需要在用到日志的地方,加个端点,Debug跑起来,观察下log对象就可以了,比如:

下面这个是使用默认Logback的情况:

使用Logback

下面这个是使用Log4j2的情况

使用Log4j2

最后,因为之前Log4j2有过很大的漏洞问题,大家一定要用最新版本哦!

安全起见,建议您至少要用2.17.0以上的版本(如果用的Spring Boot 2.6.2+,那已经是2.17.0了,不需要担心)。当然,目前最新已经到2.17.1,您也可以自己升级到2.17.1来使用,如何升级呢?还是按照这篇文章介绍的操作即可。

代码示例

本文的完整工程可以查看下面仓库中2.x目录下的chapter8-2工程:

  • Github:https://github.com/dyc87112/SpringBoot-Learning/
  • Gitee:https://gitee.com/didispace/SpringBoot-Learning/

如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!

与优秀的人在一起,自己也会优秀起来

高质量技术交流群,您还没加入吗?

赶紧点击加入我们,享受一起成长的快乐!


前沿技术早知道,弯道超车有希望
积累超车资本,从关注DD开始

点击阅读原文,送你免费Spring Boot教程!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存