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.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.hqwc.cn/news/643681.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享基于鸿蒙OpenHarmony的Unity团结引擎应用开发赛

该赛题旨在鼓励更多开发者基于OpenHarmony4.x版本&#xff0c;使用团结引擎创造出精彩的游戏与应用。本次大赛分为“创新游戏”与“创新3D 化应用”两大赛道&#xff0c;每赛道又分“大众组”与“高校组”&#xff0c;让不同背景的开发者同台竞技。无论你是游戏开发者&#xff…

8.4.3 使用3:配置单臂路由实现VLAN间路由

1、实验目的 通过本实验可以掌握&#xff1a; 路由器以太网接口上的子接口配置和调试方法。单臂路由实现 VLAN间路由的配置和调试方法。 2、实验拓扑 实验拓扑如下图所示。 3、实验步骤 &#xff08;1&#xff09;配置交换机S1 S1(config)#vlan 2 S1(config-vlan)#exit S…

LayuiMini使用时候初始化模板修改(下载源码)

忘记加了 下载 地址 &#xff1a; layui-mini: layuimini&#xff0c;后台admin前端模板&#xff0c;基于 layui 编写的最简洁、易用的后台框架模板。只需提供一个接口就直接初始化整个框架&#xff0c;无需复杂操作。 LayuiMini使用时候初始化模板官网给的是&#xff1a; layu…

【目标检测】YOLOv7 网络结构(与 YOLOv4,YOLOv5 对比)

YOLOv7 和 YOLOv4 Neck 与 Head 结构对比 其实 YOLOv7 的网络结构网上很多文章已经讲得很清除了&#xff0c;网络结构图也有非常多的版本可供选择&#xff0c;因为 YOLOv7 和 YOLOv4 是一个团队的作品&#xff0c;所以在网络结构方面&#xff0c; YOLOv7 和 YOLOv4 有很多相似…

调度问题变形的贪心算法分析与实现

调度问题变形的贪心算法分析与实现 一、问题背景与算法描述二、算法正确性证明三、算法实现与分析四、结论 一、问题背景与算法描述 带截止时间和惩罚的单位时间任务调度问题是一个典型的贪心算法应用场景。该问题的目标是最小化超过截止时间导致的惩罚总和。给定一组单位时间…

Swift-27-类的初始化与销毁

Swift的初始化是一个有大量规则的固定过程。初始化是设置类型实例的操作&#xff0c;包括给每个存储属性初始值&#xff0c;以及一些其他准备工作。完成这个过程后&#xff0c;实例就可以使用了。 简单来讲就是类的构造函数&#xff0c;基本语法如下&#xff1a; 注意&#xff…

CentOS7/RHEL7 root密码破解

我们知道root是CentOS7/RHEL7系统的管理员用户&#xff0c;一般情况下&#xff0c;我们是不会把其密码忘记的&#xff0c;如果万一忘记了&#xff0c;如果破解root密码呢&#xff0c;今天就为大家详细讲讲。 1.CentOS7/RHEL7 root密码破解 以VMware虚拟机上CentOS7系统为例 …

毕业撒花 流感服务小程序的设计与实现

目录 1.1 总体页面设计 1.1.1 用户首页 1.1.2 新闻页面 1.1.3 我的页面 1.1.5 管理员登陆页面 1.1.6 管理员首页 1.2 用户模块 1.2.1 体检预约功能 1.2.2 体检报告功能 1.2.4 流感数据可视化功能 1.2.5 知识科普功能 1.2.6 疾病判断功能 1.2.7 出示个人就诊码功能 …

前端实现将二进制文件流,并下载为excel文件

目录 一、关于二进制流二、项目实践三、常见问题及解决 一、关于二进制流 含义&#xff1a;二进制流是一种计算机文件格式&#xff0c;它的数据以二进制形式存储&#xff0c;与文本文件不同。 二进制文件可以包含任意类型的数据&#xff0c;例如&#xff1a;图像、音频、视频…

在浏览器输入网址,Enter之后发生了什么?

在浏览器输入网址&#xff0c;Enter之后发生了什么&#xff1f; 很多八股文会给出&#xff1a; 1. DNS Resolution2. Establishing a Connection3. Sending an Http Request4. Receiving the HTTP Response5. Rendering the Web Page 但今天我斗胆插入第0.9步URL Parsing&#…

大模型产业盛典上石景山智能算力中心绽放新光芒

2024年4月16日&#xff0c;由中关村数智人工智能产业联盟主办的“2024人工智能大模型产业发展大会”圆满闭幕。在这场盛会中&#xff0c;企商在线石景山智能算力中心以其作为北京最大规模的公共智能算力中心的身份亮相&#xff0c;为首都建设全球数字标杆城市注入了新的活力。 …

Chrome 网络调试程序 谷歌网络调试 network

目录 1.网络面板总览2.概况了解3.Waterfall接口排队等待时间4.关注请求接口的Size,可能是占据内存溢出的接口5.过滤器一栏 fetch/xhr 什么意思6. Stalled 什么意思7.Queueing 什么意思8.Queueing和Stalled之间什么关系9.为什么会有阻塞状态10.Time列是pending 什么意思 1.网络面…