Spring Boot入门(21):使用Spring Boot和Log4j2进行高效日志管理:配置详解

举报
bug菌 发表于 2023/08/27 19:23:49 2023/08/27
【摘要】 本文将介绍如何在Spring Boot项目中整合Log4j2的配置,并详细讲解Log4j2的基本概念和配置方式。同时,本文还会给出一些示例代码和测试用例,方便读者在实际开发中使用Log4j2。

🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升。

本专栏致力打造最硬核 Spring Boot 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

Spring Boot 整合 Log4j2

前言

Log4j2是Apache软件基金会下的一个日志框架,它是Log4j的升级版。与Log4j相比,它在性能和功能上有着极大的提升。Spring Boot本身已经默认集成了Logback作为日志框架,但如果需要使用Log4j2来替代Logback,只需要进行简单的配置即可。

本篇文章主要介绍Spring Boot如何整合Log4j2以及相应的配置方法。

摘要

本文将从以下几个方面介绍Spring Boot整合Log4j2的方法:

  1. 添加Log4j2的依赖;
  2. 配置Log4j2;
  3. 使用Log4j2记录日志。

Log4j2基本概念

在使用Log4j2之前,先来了解一下Log4j2的基本概念。

  • Logger:负责日志记录的核心组件,通常根据不同的日志级别记录不同的日志信息。
  • Appender:负责将日志记录输出到不同的目的地,如控制台、文件、数据库等。
  • Layout:负责格式化日志记录的信息。
  • Configuration:负责整个Log4j2的配置,包括Logger、Appender、Layout等组件的配置。

添加Log4j2的依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</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>

第一个依赖是Spring Boot的starter依赖,第二个依赖是Log4j2的starter依赖。

需要注意的是,由于Spring Boot本身默认使用Logback作为日志框架,因此在添加Log4j2依赖时需要将spring-boot-starter-logging排除掉。

配置Log4j2

在src/main/resources目录下创建log4j2.xml文件,并添加Log4j2的配置信息。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
        </Console>
        <RollingFile name="RollingFile" fileName="logs/app.log"
                     filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH-mm-ss}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="com.example" level="debug" additivity="false">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingFile" />
        </Logger>
        <Root level="error">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>
</Configuration>
 

配置文件中定义了两个Appender,一个Console和一个RollingFile,并指定了它们的输出格式和输出策略。

在Loggers中定义了一个名为com.example的Logger,并将它的日志级别设置为debug,并将它的输出Appender设置为Console和RollingFile。同时,Root也设置了输出的Appender为Console和RollingFile,并将日志级别设置为error。Root是Logger的父级,如果Logger没有特别设置输出Appender,则会使用Root的输出Appender。

示例配置如下:
image.png

使用Log4j2记录日志

在Spring Boot中,可以使用注解的方式来记录日志。通过在类中添加注解@Log4j2,可以自动为该类生成一个Logger对象。

import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;

@Service
@Log4j2
public class UserService {

    public void addUser(String username, String password) {
        log.info("Add user, username: {}, password: {}", username, password);
    }

    public void updateUser(String username, String password) {
        log.info("Update user, username: {}, password: {}", username, password);
    }

    public void deleteUser(String username) {
        log.info("Delete user, username: {}", username);
    }
}

上述代码中,使用了Lombok提供的@Log4j2注解,自动生成了一个名为log的Logger对象。在类中的方法中通过log对象记录了相应的日志信息。

小结

本文介绍了Spring Boot如何整合Log4j2以及相应的配置方法。

首先,需要在pom.xml文件中添加Log4j2的依赖;然后,在classpath下创建log4j2.xml配置文件,并定义相应的Appender和Logger;最后,在类中使用@Log4j2注解生成Logger对象,并使用log对象记录日志信息。

通过本文的介绍,相信读者已经了解了如何使用Log4j2来替代Logback,并且能够快速上手使用Log4j2记录日志。

关于我

👨‍🎓作者:bug菌
✏️博客:CSDN掘金infoQ51CTO
🎉简介:CSDN|阿里云|华为云|51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料.

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。