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

news/2025/3/22 11:00:48/

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。

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

使用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记录日志。


http://www.ppmy.cn/news/1435349.html

相关文章

Kubernetes(K8S)特性有哪些?

Kubernetes简介 Kubernetes是一个开源的容器编排引擎&#xff0c;用于自动部署、扩展和管理容器化应用程序。它提供了一个平台来管理容器化应用程序的部署、扩展、自动化操作、服务发现和负载均衡等功能&#xff0c;让开发者能够更轻松地管理和运行容器化应用程序。 Kubernet…

Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图

Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroom Classic、Media Encoder、Photoshop、Premiere Pro、Adobe XD 请…

OneFlow 概念清单:了解下一代深度学习框架的核心特性

OneFlow是新兴的深度学习框架&#xff0c;备受关注。本文将带你逐步了解OneFlow的核心概念、特性以及与其他深度学习框架的比较。通过本文&#xff0c;你将深入了解OneFlow为什么备受瞩目&#xff0c;以及如何利用它来构建高效的深度学习模型。 1. OneFlow简介 OneFlow是由中…

绿色便携方式安装apache+mysql+tomcat+php集成环境并提供控制面板

绿色便携方式安装带控制面板的ApacheMariaDBTomcatPHP集成环境 目录 绿色便携方式安装带控制面板的ApacheMariaDBTomcatPHP集成环境[TOC](目录) 前言一、XAMPP二、安装和使用1.安装2.使用 三、可能的错误1、检查端口占用2、修改端口 前言 安装集成环境往往配置复杂&#xff0c…

AI大模型探索之路-训练篇3:大语言模型全景解读

文章目录 前言一、语言模型发展历程1. 第一阶段&#xff1a;统计语言模型&#xff08;Statistical Language Model, SLM&#xff09;2. 第二阶段&#xff1a;神经语言模型&#xff08;Neural Language Model, NLM&#xff09;3. 第三阶段&#xff1a;预训练语言模型&#xff08…

小程序变更主体公证怎么做?

小程序迁移变更主体有什么作用&#xff1f;好多朋友都想做小程序迁移变更主体&#xff0c;但是又不太清楚具体有啥用&#xff0c;今天我就来详细说说。首先&#xff0c;小程序迁移变更主体最重要的作用就是可以修改主体。比如你的小程序原来是 A 公司的&#xff0c;现在 A 公司…

数据链路层(计算机网络,待完善)

0、前言 本文大多数图片都来自于 B站UP主&#xff1a;湖科大教书匠 的教学视频&#xff0c;对高军老师及其团队制作出这么优质的课程表示感谢。文章增加了部分个人理解&#xff0c;内容并不是对视频的静态化翻译。 1、概述 1.1、数据链路层在计算机网络体系中的位置 1.2、对…

恶意软件狩猎新途径:使用.NET元数据分析跟踪恶意软件

本文由Blaze于2024年3月25日发表于其个人博客网站上。 就在不久前&#xff0c;我们意外发现了一个PureCrypter样本&#xff0c;而PureCrypter则是一款适用于各种类型恶意软件&#xff08;例如Agent Tesla和RedLine&#xff09;的加载器和混淆处理工具。深入分析之后&#xff0c…