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


    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.bootgroupId>
        <artifactId>spring-boot-starterartifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-loggingartifactId>
            exclusion>
        exclusions>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-log4j2artifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

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

    配置Log4j2

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

    
    <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>
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

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

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

    示例配置如下:
    在这里插入图片描述

    使用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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

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

    小结

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

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

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

  • 相关阅读:
    Spring Cloud Alibaba+saas企业架构技术选型+架构全景业务图 + 架构典型部署方案
    springboot毕设项目电商系统的设计与实现 61d6r(java+VUE+Mybatis+Maven+Mysql)
    基于JAVA时间管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    第1章_搭建开发环境
    分布式 ID 的实现方案——Java全栈知识(13)
    css实现风车效果
    c++均值滤波:cv::blur
    C++项目实战——基于多设计模式下的同步&异步日志系统-④-日志系统框架设计
    Java_线程的概念和线程的创建的方法
    ubuntu命令
  • 原文地址:https://blog.csdn.net/weixin_66592566/article/details/132526471