Spring Boot 3.3高级日志配置详解:从 Logback 到 Log4j 2 的全面掌握

news/2024/11/25 8:32:55/

Spring Boot 3.3 对日志系统进行了一些更新和改进,特别是在对 Logback 和 Log4j 2 的支持上。以下是从 Logback 切换到 Log4j 2 的一些高级配置详解:

1. 依赖管理

首先,你需要在项目的 pom.xmlbuild.gradle 文件中包含正确的依赖。

对于 Maven:

<dependencies><!-- 使用 Spring Boot 3.x 的 Log4j2 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId></dependency>
</dependencies>

对于 Gradle:

dependencies {// 使用 Spring Boot 3.x 的 Log4j2 依赖implementation 'org.springframework.boot:spring-boot-starter-logging'implementation 'org.apache.logging.log4j:log4j-core'implementation 'org.apache.logging.log4j:log4j-api'
}

2. 配置文件

Spring Boot 支持通过 application.propertiesapplication.yml 文件进行日志配置,但更复杂的配置通常放在外部的日志框架配置文件中。

Logback 配置文件(logback-spring.xml 或 logback.xml):

<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="STDOUT"/></root>
</configuration>

Log4j 2 配置文件(log4j2-spring.xml 或 log4j2.xml):

<Configuration><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root></Loggers>
</Configuration>

3. 配置属性

application.propertiesapplication.yml 中,你可以设置一些基本的日志级别和配置文件路径。

application.properties 示例:

# 设置全局日志级别
logging.level.root=INFO# 设置特定包或类的日志级别
logging.level.org.springframework.web=DEBUG# 设置 Log4j2 配置文件路径
logging.config=log4j2-spring.xml

application.yml 示例:

logging:level:root: INFOorg.springframework.web: DEBUGconfig: log4j2-spring.xml

4. 动态日志级别调整

Log4j 2 支持通过 JMX 或其他工具动态调整日志级别。这在生产环境中非常有用,因为它允许你实时调整日志输出,而无需重启应用程序。

5. 性能考虑

Log4j 2 在性能上通常优于 Logback,特别是在高吞吐量的场景下。Log4j 2 的异步日志记录功能可以显著提高性能,减少日志记录对主线程的影响。

6. 集成第三方库

当集成第三方库时,重要的是要确保它们的日志记录也遵循你的应用程序的日志级别和格式。有时,你可能需要额外配置这些库,以确保它们与你的日志框架兼容。

总结

从 Logback 切换到 Log4j 2 涉及到依赖管理、配置文件的更改、属性设置的调整以及可能的性能优化。Spring Boot 3.3 提供了灵活的配置选项,使得这种切换相对简单。确保在切换过程中测试你的应用程序,以验证日志记录行为符合预期。


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

相关文章

基于STM32的火灾报警装置的Proteus仿真

文章目录 一、火灾报警1.题目要求2.思路2.1 主控2.2 传感器2.3 设定阈值--按键2.4 报警和通风2.5 OLED显示2.6 电源部分2.7 远程终端 3.仿真3.1 未仿真时3.2 仿真开始&#xff0c;界面13.3 切换界面23.4 切换界面3 4.仿真程序4.1 程序说明4.2 主函数4.3 OLED显示函数 二、总结 …

什么是Axios,有什么特点

什么是 Axios&#xff1f; Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;可以用于浏览器和 Node.js 环境。它由 Matt Zabriskie 创建&#xff0c;旨在提供一个简单、灵活且功能强大的 HTTP 请求库。Axios 支持所有现代浏览器和 Node.js&#xff0c;可以用于发送 GET、…

第2.5节 AI文本——做课题

让AI文本工具kimi学习也很重要&#xff0c;例如我们要做一个课题&#xff0c;让它学习类似的内容&#xff0c;这些内容可能是docx文件、也可能是pdf文件、也可能是ppt文件&#xff0c;我们可以上传附件。 下图中的“曲别针”作用就是上传附件的。 Prompt 请认真学习附件中的三…

VSCode打开c#项目报错:DotnetAcquisitionTimeoutError

VSCode打开c#项目&#xff0c;会自动下载.NET环境&#xff0c;下载不了报超时&#xff0c;详情如下&#xff1a; ms-dotnettools.csharp tried to install .NET 8.0.11~x64 but that install had already been requested. No downloads or changes were made. ms-dotnettools.…

微信小程序 表单验证(async-validator)

一. 安装 npm i async-validator 二. 代码 import Schema from async-validator; // 引用 Page({data: {name: , // 要验证的数据},// 对数据进行验证onValidator() {// 定义规则const rules {// key 验证规则的名称 名字需要和验证的数据保持一致name: [// required:…

第21周:机器学习

目录 摘要 Abstract 一、ARIMA模型 1、时间序列模型 &#xff08;1&#xff09;时间序列的分析方法 &#xff08;2&#xff09;时间序列的预处理 &#xff08;3&#xff09;ARIMA模型的引入 2、AR模型 3、MA模型 4、小结 二、K-means聚类算法 三、实验 1、数据处…

PPT文件过大的原因排查

1、文件中包含很多图片或者视频文件 该问题压缩图片或者减少图片即可 2、文件中嵌入了字体 WPS&#xff1a;点击左上角-工具-选项-常规与保存-将字体嵌入文件&#xff0c;取消勾选 Office&#xff1a;点击左上角-文件-选项-保存-将字体嵌入文件&#xff0c;取消勾选

C语言进阶6:文件操作

本章重点 为什么使用文件什么是文件文件的打开和关闭文件的顺序读写文件的随机读写文本文件和二进制文件文件读取结束的判定文件缓冲区 文章目录 1.为什么使用文件2.什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3.文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭 4.文件…