当前位置: 首页 > news >正文

【SpringBoot系列】SpringBoot中集成日志的几种方式?

579a429daf314744b995f37351b46548

强烈推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能

b004071ozy_05_amzn

在开发中,日志记录是保障应用程序健壮性、可维护性的重要手段。通过日志,我们可以记录系统的运行状态、捕获异常并进行调试。

在 Spring Boot 项目中集成日志记录,可以使用常见的日志框架如 Logback 或 Log4j2。

Spring Boot 默认使用的是 Logback,但你也可以根据需求选择其他框架。以下是几种常用的日志集成方法:

1. 使用 Spring Boot 默认的 Logback 日志框架

Spring Boot 内置了 Logback,并提供了默认的日志配置。只需在 application.propertiesapplication.yml 中进行简单配置即可。

步骤:
  1. 引入依赖
    如果是标准的 Spring Boot 项目,通常不需要额外添加依赖,Logback 已经集成。如果你需要自定义日志框架,可以在 pom.xml 中手动引入依赖:

    <!-- logback-classic已经包含在spring-boot-starter中 -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId>
    </dependency>
    
  2. 基本配置
    可以在 application.properties 中进行基本的日志配置:

    # 控制台日志输出级别
    logging.level.root=INFO
    logging.level.com.yourpackage=DEBUG  # 定制某个包的日志级别
    # 日志文件输出
    logging.file.name=logs/spring-boot-app.log
    logging.file.path=logs  # 指定日志存储的路径
    logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n  # 控制台日志输出格式
    logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n  # 文件日志输出格式
    
  3. 日志格式调整 可以通过 Logback 的 logback-spring.xml 文件进行更详细的配置。创建 src/main/resources/logback-spring.xml 文件,内容如下:

    <configuration><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n</pattern></encoder></appender><appender name="file" class="ch.qos.logback.core.FileAppender"><file>logs/spring-boot-app.log</file><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="console" /><appender-ref ref="file" /></root>
    </configuration>
    

2. 使用 Log4j2 日志框架

如果你更喜欢使用 Log4j2,可以通过以下步骤进行集成。

步骤:
  1. 引入依赖pom.xml 中添加 Log4j2 的依赖,并排除默认的 Logback:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    
  2. 配置 Log4j2src/main/resources 目录下创建 log4j2-spring.xml 文件,内容如下:

    xml复制代码<Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/></Console><File name="File" fileName="logs/spring-boot-app.log"><PatternLayout><pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern></PatternLayout></File></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/><AppenderRef ref="File"/></Root><Logger name="com.yourpackage" level="debug" additivity="false"><AppenderRef ref="Console"/><AppenderRef ref="File"/></Logger></Loggers>
    </Configuration>
    

3. 在代码中使用日志

无论你使用 Logback 还是 Log4j2,Spring Boot 都会为你注入 SLF4J 接口。在你的代码中使用 LoggerFactory 来记录日志:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ExampleController {private static final Logger logger = LoggerFactory.getLogger(ExampleController.class);@GetMapping("/example")public String example() {logger.info("This is an info message");logger.debug("This is a debug message");logger.error("This is an error message");return "Logging example!";}
}

4.使用lombok.extern.slf4j.Slf4j

@Slf4j 是 Lombok 提供的一个注解,用于简化日志记录的过程。它会自动为类注入一个 org.slf4j.Logger 类型的 log 对象,让你无需手动创建 Logger 实例。@Slf4j 基于 SLF4J(Simple Logging Facade for Java),这是一个常用的日志框架接口,可以与多种日志实现(如 Logback、Log4j2 等)结合使用。

1.基本使用

在类上加上 @Slf4j 注解,Lombok 会自动为该类生成一个名为 logLogger 实例。

import lombok.extern.slf4j.Slf4j;@Slf4j
public class ExampleService {public void doSomething() {log.info("This is an info message");log.debug("This is a debug message");log.error("This is an error message");}
}
2. 日志级别

使用 @Slf4j 注解后,你可以在代码中使用 SLF4J 提供的不同级别的日志方法,例如:

  • log.trace() - 追踪日志,用于非常细节化的日志记录

  • log.debug() - 调试日志

  • log.info() - 信息日志

  • log.warn() - 警告日志

  • log.error() - 错误日志

3. 配合 Spring Boot 和日志配置

在 Spring Boot 项目中,默认使用的是 Logback 日志框架,因此不需要额外配置就可以直接使用 @Slf4j 进行日志记录。

日志级别和格式等配置可以在 application.propertieslogback-spring.xml 中进行调整。

4. 示例代码
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;@Slf4j
@Service
public class UserService {public void createUser(String username) {log.info("Creating user with name: {}", username);try {// 模拟一些业务逻辑log.debug("Processing user creation logic...");// 如果发生错误if (username == null) {throw new IllegalArgumentException("Username cannot be null");}} catch (Exception e) {log.error("Error creating user: {}", username, e);}}
}

专栏推荐

大佬们可以收藏以备不时之需:

Spring Boot 专栏:http://t.csdnimg.cn/peKde

ChatGPT 专栏:http://t.csdnimg.cn/cU0na

Java 专栏:http://t.csdnimg.cn/YUz5e

Go 专栏:http://t.csdnimg.cn/Jfryo

Netty 专栏:http://t.csdnimg.cn/0Mp1H

Redis 专栏:http://t.csdnimg.cn/JuTue

Mysql 专栏:http://t.csdnimg.cn/p1zU9

架构之路 专栏:http://t.csdnimg.cn/bXAPS

csdn-end

博主深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新JAVA全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

这套1T的JAVA学习资料是为真正想在技术道路上突围的人准备的,内容覆盖全面:从各大厂的面试题到1000多个专业简历模板,从就业班到进阶课程,再到架构师实战与全栈高薪课程,帮助你从基础到高阶一步步提升!

无论是找工作还是技能进阶,这份VIP资料都是你不可错过的利器!加下方V了解详情,备注:JAVA开发VIP资料。

部分内容:

1

2

3

8

9

10

如果有需求的可以点下方微信了解详情。


http://www.mrgr.cn/news/53625.html

相关文章:

  • 【python】OpenCV—findContours(4.2)
  • 即插即用特征融合模块,即用即涨点!
  • 【分布式微服务云原生】《微服务架构大揭秘:流行框架与服务治理攻略》
  • C++学习实例:入门,了解其输入输出
  • 如何利用 Python抓取网页数据 其他方式抓取网页数据列举
  • 【MySQL】提高篇—事务管理:事务隔离级别的介绍
  • JavaWeb 开发指南
  • JavaWeb 23.一文速通npm的配置和使用
  • 【代码模板】如何用Python脚本执行shell命令并且获取命令的输出?(subprocess.Popen,subprocess.check_output)
  • TryHackMe 第8天 | Web Fundamentals (三)
  • 如何安全运行别人上传的Python代码?
  • 题目 3161: 蓝桥杯2023年第十四届省赛真题-子矩阵
  • kubernetes(三)
  • 勤于奋身体倒下还是上来回答粉丝关于Adsense赚美金
  • 设计模式之设计模式分类
  • ESP32-IDF 通用定时器 GPTimer
  • LeetCode题练习与总结:拼接最大数--321
  • 小白学大模型 RAG:GraphRAG 概念、组成和流程,看完这一篇你就懂了!!
  • 出手!快手可灵开源版,AI视频生成整合包!
  • 84.【C语言】数据结构之顺序表的头部插入和删除
  • 医疗领域的RAG技术:如何通过知识图谱提升准确性
  • vb操作电子表格 文件夹内多表格 提取数据 在生成一个新表格
  • Leetcode—192. 统计词频【中等】(Shell)
  • 【树莓派】树莓派搭建个人服务器
  • Qt之QObject
  • Java并发编程深度解析:从基础到实战