SpringBoot 日志:从基础到高级的全面指南

news2024/11/13 9:13:10

📚 SpringBoot 日志:从基础到高级的全面指南 🔍

  • 📚 SpringBoot 日志:从基础到高级的全面指南 🔍
    • 摘要
    • 引言
    • 正文内容
      • 一、日志概述 📜
      • 二、日志使用 📝
        • 2.1 打印日志 📣
        • 2.2 日志格式 🔍
        • 2.3 日志级别 📉
        • 2.4 日志配置 ⚙️
          • 2.4.1 日志级别 📊
          • 2.4.2 日志持久化 💾
          • 2.4.3 日志文件分割 📂
          • 2.4.4 配置日志格式 🎨
      • 三、更简单的日志输出 🧩
        • 3.1 添加 Lombok 依赖 📦
        • 3.2 输出日志 📉
    • 🤔 QA环节
    • 小结
    • 表格总结
    • 未来展望 🌟
    • 参考资料 📚

在这里插入图片描述

博主 默语带您 Go to New World.
个人主页—— 默语 的博客👦🏻
《java 面试题大全》
《java 专栏》
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨


📚 SpringBoot 日志:从基础到高级的全面指南 🔍

摘要

大家好,我是默语,擅长全栈开发、运维和人工智能技术。在我的博客中,我主要分享技术教程、Bug解决方案、开发工具指南、前沿科技资讯、产品评测、使用体验、优点推广和横向对比评测等内容。今天,我将带大家深入探讨 SpringBoot 中的日志管理,包括日志的基础概念、使用方法、配置技巧以及如何使用 Lombok 简化日志输出。无论你是初学者还是有一定经验的开发者,都可以从中获得实用的知识和技巧。📈💡

引言

在软件开发过程中,日志是了解程序运行状态、调试和排查问题的重要工具。SpringBoot 提供了强大的日志功能,但要充分发挥其作用,我们需要了解如何配置和使用日志。本文将详细介绍 SpringBoot 中日志的基本概念、使用方法、配置技巧以及如何通过 Lombok 简化日志输出,帮助你更高效地管理和分析日志信息。🛠️

正文内容

一、日志概述 📜

日志记录系统的运行状态、错误信息以及各种事件,是排查问题和优化系统的重要工具。SpringBoot 内置了对多种日志框架的支持,如 Logback、Log4j2 和 JDK logging。了解这些日志框架及其配置方式对于有效使用日志至关重要。

二、日志使用 📝

2.1 打印日志 📣

在 SpringBoot 中,你可以使用 Logger 类来打印日志。默认情况下,SpringBoot 使用 Logback 作为日志实现。

代码示例:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class ApiController {
    private static final Logger logger = LoggerFactory.getLogger(ApiController.class);

    @GetMapping("/hello")
    public String hello() {
        logger.info("Hello endpoint called");
        return "Hello, World!";
    }
}
2.2 日志格式 🔍

日志格式决定了日志记录的显示方式。SpringBoot 允许你通过配置文件自定义日志格式,以满足不同的需求。

代码示例(application.yml):

logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n"
    file: "%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n"
2.3 日志级别 📉

日志级别用于控制日志的详细程度。常见的日志级别包括 TRACE、DEBUG、INFO、WARN 和 ERROR。

代码示例(application.yml):

logging:
  level:
    root: INFO
    com.example: DEBUG
2.4 日志配置 ⚙️
2.4.1 日志级别 📊

你可以在配置文件中设置不同包的日志级别,以便控制输出的信息量。

代码示例(application.yml):

logging:
  level:
    com.example.service: DEBUG
    com.example.controller: ERROR
2.4.2 日志持久化 💾

将日志信息写入文件有助于长期保存和分析。你可以通过配置文件指定日志文件的位置和大小限制。

代码示例(application.yml):

logging:
  file:
    name: myapp.log
    max-size: 10MB
    max-history: 30
2.4.3 日志文件分割 📂

日志文件分割可以避免单个文件过大,影响性能和管理。你可以配置 Logback 来进行文件分割。

代码示例(logback-spring.xml):

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>logs/myapp.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeBasedRollingPolicy">
        <fileNamePattern>logs/myapp-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <maxFileSize>10MB</maxFileSize>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>
2.4.4 配置日志格式 🎨

自定义日志格式可以使日志信息更加清晰易读。你可以在 logback-spring.xml 文件中配置不同的日志格式。

代码示例(logback-spring.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>

三、更简单的日志输出 🧩

3.1 添加 Lombok 依赖 📦

Lombok 是一个 Java 库,可以通过注解简化代码。在日志方面,Lombok 提供了 @Slf4j 注解,自动生成 Logger 实例。

添加依赖(pom.xml):

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
    <scope>provided</scope>
</dependency>
3.2 输出日志 📉

使用 Lombok 的 @Slf4j 注解可以简化日志记录的代码。

代码示例:

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/hello")
    public String hello() {
        log.info("Hello endpoint called");
        return "Hello, World!";
    }
}

🤔 QA环节

Q: SpringBoot 中使用的默认日志框架是什么?

A: SpringBoot 默认使用 Logback 作为日志框架。你可以通过配置文件自定义 Logback 的设置,也可以选择其他日志框架,如 Log4j2。

Q: 如何查看不同日志级别的信息?

A: 你可以在 application.ymllogback-spring.xml 文件中设置不同的日志级别,以便查看所需的日志信息。设置 logging.level 属性来调整日志级别。

Q: Lombok 的 @Slf4j 注解有什么优势?

A: Lombok 的 @Slf4j 注解自动生成 Logger 实例,减少了 boilerplate 代码,使得日志记录变得更加简洁和高效。

小结

本文详细介绍了如何在 SpringBoot 项目中使用日志,包括基本概念、日志使用方法、配置技巧以及通过 Lombok 简化日志输出的方法。掌握这些知识将有助于你更高效地管理和分析日志信息,提高开发效率和系统可靠性。希望你能在实际项目中应用这些技巧,提升代码质量。

表格总结

内容描述示例代码
日志概述介绍日志的基本概念及 SpringBoot 中的日志框架-
打印日志如何在代码中使用 Logger 打印日志logger.info("信息");
日志格式配置日志的输出格式logging.pattern.console
日志级别设置不同的日志级别logging.level.root: INFO
日志持久化配置日志文件的存储和管理logging.file.name
日志文件分割配置日志文件的分割策略rollingPolicy
配置日志格式自定义日志输出格式logback-spring.xml
Lombok 简化日志输出使用 Lombok 的 @Slf4j 注解简化日志记录@Slf4j 注解与 log.info("信息");

未来展望 🌟

随着开发工具和框架的不断演进,日志管理的功能也将变得更加强大和灵活。希望未来的日志框架能够提供更多智能化的特性,进一步简化日志管理和分析的工作。希望本文的内容能够为你的开发工作提供有价值的参考,并帮助你在实际项目中更加高效地使用日志功能。

参考资料 📚

  1. [SpringBoot 官方文档](https://docs

.spring.io/spring-boot/docs/current/reference/htmlsingle/)

  1. Lombok 官方文档
  2. Logback 官方文档

感谢大家阅读这篇文章!如果你有任何问题或建议,欢迎在评论区留言。关注我的博客,获取更多技术干货和最新资讯!🚀🌟

在这里插入图片描述


🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主文件表遗失:数据恢复策略与实战指南

深入解析&#xff1a;无法恢复主文件表的困境 在数字化时代&#xff0c;数据不仅是信息的载体&#xff0c;更是企业运营和个人生活的核心。然而&#xff0c;当遭遇“无法恢复主文件表”的困境时&#xff0c;整个数据系统仿佛被按下了暂停键&#xff0c;让人措手不及。主文件表…

数据集成是什么意思?方法有哪些?数据集成三种方法介绍

1 数据集成是什么 数据集成(Data Intergration)&#xff0c;也称为数据整合&#xff0c;是通过将分布式环境中的异构数据集成起来&#xff0c;为用户提供统一透明的数据访问方式。该定义中的集成是指从整体层面上维护数据的一致性&#xff0c;并提高对数据的利用和共享&#x…

智能语音转Markdown的神器

嘿&#xff0c;技术大咖们&#xff0c;今天我要给你们安利一个超酷炫的智能语音转Markdown笔记系统&#xff0c;它融合了前沿的语音识别技术和强大的AI大模型&#xff0c;绝对是记录和整理信息的神器&#xff01; 打造了一个语音转Markdown的神器 智能语音生成Markdown笔记 这…

芋道源码yudao-cloud 二开日记(商品sku数据归类为规格属性)

商品的每一条规格和属性在数据库里都是单一的一条数据&#xff0c;从数据库里查出来后&#xff0c;该怎么归类为对应的规格和属性值&#xff1f;如下图&#xff1a; 在商城模块&#xff0c;商品的单规格、多规格、单属性、多属性功能可以说是非常完整&#xff0c;如下图&#x…

Java新手启航:JDK 21 版本安装,开启编程之行

在Java开发前&#xff0c;JDK是必不可少的环境&#xff0c;接下来&#xff0c;让我们一起完成JDK 21版本的下载和安装&#xff01; 种一棵树最好的时间是10年前&#xff0c;其次就是现在&#xff0c;加油&#xff01; …

【Redis 进阶】事务

Redis 的事务和 MySQL 的事务概念上是类似的&#xff0c;都是把一系列操作绑定成一组&#xff0c;让这一组能够批量执行。 一、Redis 的事务和 MySQL 事务的区别 1、MySQL 事务 原子性&#xff1a;把多个操作打包成一个整体。&#xff08;要么全都做&#xff0c;要么都不做&am…

实时渲染云交互助力汽车虚拟仿真新体验!

汽车虚拟仿真是指利用软件和数学模型&#xff0c;模拟汽车的设计、制造、测试和运行等过程&#xff0c;以及汽车与环境、驾驶员、乘客等的交互。汽车虚拟仿真可以帮助汽车工程师快速验证方案&#xff0c;优化性能&#xff0c;降低成本&#xff0c;提高安全性和可靠性。 ​ 汽车…

S32G3系列芯片Serial Boot功能详解!

《S32G3系列芯片——Boot详解》系列——S32G3系列芯片Serial Boot功能详解&#xff01;★★★ 一、Serial Boot模式概述二、串行下载协议2.1 基于UART和CAN的下载协议概述2.2 基于FlexCAN的Serial Boot2.2.1 IO配置2.2.2 时钟配置2.2.3 通信波特率2.2.4 基于FlexCAN的Serial Bo…

精心准备的高水平的博客【点评语】,来抄啊!

大家好&#xff0c;我是一名_全栈_测试开发工程师&#xff0c;已经开源一套【自动化测试框架】和【测试管理平台】&#xff0c;欢迎大家关注我&#xff0c;和我一起【分享测试知识&#xff0c;交流测试技术&#xff0c;趣聊行业热点】。 第 1 条 这篇博客文章如同灯塔般照亮了技…

ElementPlus 覆盖默认样式的探索

文章目录 问题解决:global 解释改进一下在研究一下 问题 解决 使用 :global(.el-header) :global(.el-header) {padding: 0; } :global(.el-menu--horizontal) {justify-content: center; }:global 解释 在Vue中&#xff0c;:global() 是一个特殊的 CSS 选择器&#xff0c;用…

在Windows中使用VS Code连接远程服务器

①首先生成自己的密钥 ssh-keygen ②打开VS Code的扩展&#xff0c;安装连接工具 Remote-SSH Remote - SSH: Editing Configuration Files ③点击左侧远程资源管理器&#xff0c;之后点击SSH右侧齿轮&#xff0c;选择一个配置文件 注意&#xff1a;此部分的Host名字要与生成…

【Python机器学习系列】一文教你实现决策树模型可视化(案例+源码)

这是我的第335篇原创文章。 一、引言 决策树是一个有监督分类模型&#xff0c;本质是选择一个最大信息增益的特征值进行输的分割&#xff0c;直到达到结束条件或叶子节点纯度达到阈值。根据分割指标和分割方法&#xff0c;可分为&#xff1a;ID3、C4.5、CART算法。每一种颜色代…

GitLab安装方式

一、什么是GitLab GitLab是一个利用Ruby on Rails开发的开源应用程序&#xff0c;实现一个自托管的Git项目仓库&#xff0c;可通过Web界面进行访问公开或者私人项目。它拥有与Github类似的功能&#xff0c;能够浏览源代码&#xff0c;管理缺陷和注释&#xff0c;可以管理团队对…

动态代理对象在 IronPython 中的实现

动态代理对象是一种设计模式&#xff0c;允许在运行时动态地创建对象&#xff0c;并在这些对象上拦截和处理方法调用。它常用于 AOP&#xff08;面向方面编程&#xff09;、日志记录、权限控制等场景。应用非常广泛&#xff0c;下面跟着我来聊一聊我遇到的问题。 1、问题背景 …

通过ProSave对西门子触摸屏进行OS更新的具体操作方法(恢复出厂设置)

通过ProSave对西门子触摸屏进行OS更新的具体操作方法(恢复出厂设置) 首先,打开电脑的控制面板,将右上角的查看方式修改为“大图标”,如下图所示,找到“设置PG/PC接口”, 如下图所示,在弹出的窗口中上方的应用程序访问点的下拉菜单中选择 “S7ONLINE(STEP7)”,并在下…

【深度学习实战(49)】目标检测损失函数:IoU、GIoU、DIoU、CIoU、EIoU、alpha IoU、SIoU、WIoU原理及Pytorch实现

前言 损失函数是用来评价模型的预测值和真实值一致程度&#xff0c;损失函数越小&#xff0c;通常模型的性能越好。不同的模型用的损失函数一般也不一样。损失函数主要是用在模型的训练阶段&#xff0c;如果我们想让预测值无限接近于真实值&#xff0c;就需要将损失值降到最低…

kernel-devel导致的linux网卡驱动安装异常

引言 安装包下载&#xff1a;iso镜像文件解压后进入package路径&#xff0c;可以找到所有想要的rpm安装包 1.检查gcc gcc -v&#xff1a;检查gcc编译程序是否安装&#xff0c;如果已经成功安装直接执行步骤3 2.安装gcc & gcc-c gcc程序准备&#xff0c;拷贝到centos后进入…

大厂linux面试题攻略五之数据库管理

一、数据库管理-MySQL语句 0.MySQL基本语句&#xff1a; 1.SQL语句-增 创建xxx用户&#xff1a; mysql>create user xxx % indentified by 123456; xxx表示用户名 %b表示该用户用来连接数据库的方式&#xff08;远程或本地连接&#xff09; indentified by 123456设置密码…

《看漫画学Python》全彩PDF教程,495页深度解析,零基础也能轻松上手!

前言 说起编程语言&#xff0c;Python 也许不是使用最广的&#xff0c;但一定是现在被谈论最多的。随着近年大数据、人工智能的兴起&#xff0c;Python 越来越多的出现在人们的视野中。 在各家公司里&#xff0c;Python 还常被用来做快速原型开发&#xff0c;以便更快验证产品…

PyCharm 中如何使用驭码CodeRider?

极狐GitLab 在 5 月 28 日正式发布了 AI 产品驭码CodeRider&#xff0c;可以使用驭码CodeRider 进行AI 编程 & DevOps 流程处理。现已开启免费试用&#xff0c;登录官网&#xff1a;https://coderider.gitlab.cn/ 即可申请试用。 GitLab 中文版学习资料 驭码CodeRider 官…