Spring Boot 支持哪些日志框架

embedded/2025/1/12 22:19:04/

Spring Boot 支持多种日志框架,主要包括以下几种:

  1. SLF4J (Simple Logging Facade for Java) + Logback(默认)
  2. Log4j 2
  3. Java Util Logging (JUL)

其中,Spring Boot 默认使用 SLF4JLogback 作为日志框架。如果你需要使用其他日志框架(如 Log4j 2),可以通过添加相关依赖和配置来替代默认的 Logback。

下面将分别介绍如何在 Spring Boot 中使用不同的日志框架,并给出相应的示例代码。

1. 默认日志框架:SLF4J + Logback

Spring Boot 默认集成了 SLF4JLogback,因此你无需添加额外的依赖,只需要在代码中使用 SLF4J API 即可。

image-20250111103959305

示例代码:
package com.hk.service;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;@Service
public class UserService {private static final Logger logger = LoggerFactory.getLogger(UserService.class);public void registerUser(String username) {logger.debug("Debug: Starting user reg for {}", username);try {if (!StringUtils.hasText(username)) {logger.error("Error: Username 不能为null");throw new IllegalArgumentException("Username 不能为null");}logger.info("Info: User {} reg successfully", username);} catch (Exception e) {logger.error("Error: User registration failed for {}", username, e);}}
}
配置日志级别(application.yml):
logging:file:name: logs/application.log   # 配置日志文件level:com:hk: DEBUG                # 设置特定包的日志级别root: INFO                   # 设置根日志级别为 INFO

2. 使用 Log4j 2 作为日志框

如果你希望使用 Log4j 2 代替 Logback,可以按照以下步骤操作:

步骤 1:添加 Log4j 2 依赖

首先,你需要在 pom.xml 中排除默认的 Logback 依赖并添加 Log4j 2 的依赖。

<dependencies><!-- 排除默认的 Logback 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId><scope>provided</scope></dependency><!-- 添加 Log4j 2 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>
</dependencies>
步骤 2:创建 Log4j 2 配置文件(log4j2.xml

src/main/resources/ 目录下创建 log4j2.xml 文件,配置 Log4j 2 的日志输出格式和日志级别。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"><!-- 配置 Console Appender 输出 --><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern></PatternLayout></Console></Appenders><!-- 配置 Logger --><Loggers><Root level="info"><AppenderRef ref="Console"/></Root></Loggers>
</Configuration>
步骤 3:使用 Log4j 2 记录日志

Log4j 2 同样支持 SLF4J 接口,因此在代码中不需要做特别的修改,依然可以使用 SLF4J API 记录日志。

package com.hk.service;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;@Service
public class UserService {private static final Logger logger = LoggerFactory.getLogger(UserService.class);public void registerUser(String username) {logger.debug("Debug: Starting user reg for {}", username);try {if (!StringUtils.hasText(username)) {logger.error("Error: Username 不能为null");throw new IllegalArgumentException("Username 不能为null");}logger.info("Info: User {} reg successfully", username);} catch (Exception e) {logger.error("Error: User registration failed for {}", username, e);}}
}

3. 使用 Java Util Logging (JUL)

如果你想使用 Java Util Logging (JUL),你可以通过以下方式进行配置:

步骤 1:排除默认的 Logback 依赖

和 Log4j 2 一样,需要排除默认的 Logback 依赖。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId><scope>provided</scope>
</dependency>
步骤 2:配置 application.yml
logging:file:name: logs/application.log   # 配置日志文件level:root: INFO                   # 设置根日志级别为 INFO
步骤 3:使用 JUL 记录日志

需要简单的修改代码

package com.hk.service;import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.logging.Logger;@Service
public class UserService {private static final Logger logger = Logger.getLogger(UserService.class.getName());public void registerUser(String username) {logger.fine("Debug: Starting user reg for" +  username);try {if (!StringUtils.hasText(username)) {logger.severe("Error: Username 不能为null");throw new IllegalArgumentException("Username 不能为null");}logger.info("Info: User " +username +"reg successfully");} catch (Exception e) {logger.severe("Error: User registration failed for" + username);e.printStackTrace();}}
}

总结

Spring Boot 支持多种日志框架,并且允许你轻松切换这些框架:

  • 默认使用 SLF4JLogback,无需额外配置。
  • 使用 Log4j 2 时,需要排除默认的 Logback 并添加 Log4j 2 依赖和配置。
  • 使用 Java Util Logging (JUL) 时,配置日志级别并使用 java.util.logging.Logger

http://www.ppmy.cn/embedded/153396.html

相关文章

DSP+Simulink——点亮LED灯(TMSDSP28379D)超详细

实现功能&#xff1a;DSP28379D-LED灯闪烁 :matlab为2019a :环境建立见之前文章 Matlab2019a安装C2000 Processors超详细过程 matlab官网链接&#xff1a; Getting Started with Embedded Coder Support Package for Texas Instruments C2000 Processors Overview of Creat…

2025-1-10-sklearn学习(36、37) 数据集转换-无监督降维+随机投影 沙上并禽池上暝。云破月来花弄影。

文章目录 sklearn学习(36、37) 数据集转换-无监督降维随机投影sklearn学习(36) 数据集转换-无监督降维36.1 PCA: 主成份分析36.2 随机投影36.3 特征聚集 sklearn学习(37) 数据集转换-随机投影37.1 Johnson-Lindenstrauss 辅助定理37.2 高斯随机投影37.3 稀疏随机矩阵 sklearn学…

HarmonyOS鸿蒙-@State@Prop装饰器限制条件

一、组件Components级别的状态管理&#xff1a; State组件内状态限制条件 1.State装饰的变量必须初始化&#xff0c;否则编译期会报错。 // 错误写法&#xff0c;编译报错 State count: number;// 正确写法 State count: number 10; 2.嵌套属性的赋值观察不到。 // 嵌套的…

Oracle Dataguard(主库为双节点集群)配置详解(3):配置主库

Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;3&#xff09;&#xff1a;配置主库 目录 Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;3&#xff09;&#xff1a;配置主库一、开启归档二、开启强制日志三、…

【HarmonyOS】纯血鸿蒙真实项目开发---经验总结贴

项目场景&#xff1a; 将已有的Web网页接入到原生App。 涉及到一些网页回退、webviewController执行时机报错1710000001、位置定位数据获取、拉起呼叫页面、系统分享能力使用等。 问题描述 我们在选项卡组件中&#xff0c;在每个TabContent内容页中使用web组件加载网页。 在…

【灵码助力安全2】——利用通义灵码辅助复现未公开漏洞的实践

前言 暨上一篇【灵码助力安全1】——利用通义灵码辅助快速代码审计的最佳实践之后&#xff0c;这第二篇主要是想分享一下通义灵码在复现未公开漏洞方面的应用&#xff0c;当然&#xff0c;前提也是必须得有相应的源码。 有的时候&#xff0c;由于安全人员水平的限制和时间、…

前端如何处理后端传入的复杂数据格式

在前后端联调过程中不难发现&#xff0c;有时候从后端获取到的数据格式并不是我们所想要的格式&#xff0c;这时候就需要我们自己动手去处理了。最近在开发项目过程中也是遇到了很多传入的数据格式和自己所想要展示的有所区别&#xff0c;这里就先记录一下吧&#xff0c;总结总…

moviepy 将mp4视频文件提取音频mp3 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…