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

📚 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: INFOcom.example: DEBUG
2.4 日志配置 ⚙️
2.4.1 日志级别 📊

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

代码示例(application.yml):

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

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

代码示例(application.yml):

logging:file:name: myapp.logmax-size: 10MBmax-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.rhkb.cn/news/389090.html

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

相关文章

IIS解析漏洞~ IIS7.漏洞分析

IIS解析漏洞 文件解析漏洞是由于中间件错误的将特殊格式的文件解析成可执行网页文件(脚本)&#xff0c;配合文件上传漏洞进行GetShell的漏洞&#xff01; 1.2&#xff1a;IIS7.X 在IIS7.0和IIS7.5版本下也存在解析漏洞&#xff0c;在默认Fast-CGI开启状况下&#xff0c;在一个文…

DM集群的高可用的配置方式(多语言)

一、介绍 强调以下&#xff1a;dm_svc.conf必须放置到应用服务器上才行&#xff0c;放到其他服务器上识别不到。 文章中有的框架可能没写到并不代表不支持&#xff0c;有没提到的可文章下方留言。 1.dm_svc.conf的作用&#xff1a; dm_svc.conf文件主要是为了当DM数据库集群…

PHP健身微信小程序系统源码

&#x1f3cb;️‍♀️健身新潮流&#xff01;解锁“健身微信小程序”的全方位塑形秘籍 &#x1f4f1;开篇&#xff1a;掌中健身房&#xff0c;随时随地动起来 你还在为找不到合适的健身场地或教练而烦恼吗&#xff1f;是时候告别这些束缚&#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…

定义和使用自己的子程序——函数的介绍

定义和使用自己的子程序——函数的介绍 1.函数基础语法1.1.基础语法1.2.例题1——距离函数题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 2.void类型3.变量作用域和参数传递3.1.局部变量和全局变量3.2.形式参数和实际参数3.3.例题2——歌唱比赛题目描述输入格式输出…

计算机基础(Windows 10+Office 2016)教程 —— 第6章 电子表格软件Excel 2016(下)

电子表格软件Excel 2016 6.4 Excel 2016的公式与函数6.4.1 公式的概念6.4.2 公式的使用6.4.3 单元格的引用6.4.4 函数的使用6.4.5 快速计算与自动求和 6.5 Excel 2016的数据管理6.5.1 数据排序6.5.2 数据筛选6.5.3 分类汇总6.5.4 分组显示6.5.5 合并计算 6.6 Excel 2016的图表6…

【RabbitMQ】通配符模式(Topics)

一、基本概念 生产者&#xff08;Producer&#xff09;&#xff1a;发送消息到RabbitMQ交换机的程序。生产者定义消息的路由键&#xff0c;用于标识消息的目的地。交换机&#xff08;Exchange&#xff09;&#xff1a;接收生产者发送的消息&#xff0c;并根据路由键和绑定规则…

一款.NET开源、跨平台的DASH/HLS/MSS下载工具

前言 今天大姚给大家分享一款.NET开源&#xff08;MIT License&#xff09;、免费、跨平台的DASH/HLS/MSS下载工具&#xff0c;并且支持点播和直播&#xff08;DASH/HLS&#xff09;的内容下载&#xff1a;N_m3u8DL-RE。 网络流媒体传输协议介绍 DASH DASH是一种基于HTTP的…

2024年8月1日(前端服务器的配置以及tomcat环境的配置)

[rootstatic ~]# cd eleme_web/ [rootstatic eleme_web]# cd src/ [rootstatic src]# ls views/ AboutView.vue HomeView.vue [rootstatic src]# vim views/HomeView.vue [rootstatic src]# nohup npm run serve nohup: 忽略输入并把输出追加到"nohup.out" 构建项目…

零基础入门转录组数据分析——机器学习算法之boruta(筛选特征基因)

零基础入门转录组数据分析——机器学习算法之boruta&#xff08;筛选特征基因&#xff09; 目录 零基础入门转录组数据分析——机器学习算法之boruta&#xff08;筛选特征基因&#xff09;1. boruta基础知识2. boruta&#xff08;Rstudio&#xff09;——代码实操2. 1 数据处理…

机器学习之贝叶斯方法

机器学习之贝叶斯方法 1. 贝叶斯定理基础1.1 贝叶斯定理公式1.2 先验概率 (Prior Probability)1.3 后验概率 (Posterior Probability)1.4 似然 (Likelihood)1.5 证据 (Evidence)1.6 贝叶斯定理的应用实例 2. 贝叶斯方法的基本概念2.1 条件概率 (Conditional Probability)2.2 全…

Python SDK 使用Azure Document intelligence报错(404) Resource not found

最近项目需要使用到Azure Document intelligence,于是去做POC&#xff0c;但是发现最简单的demo跑的时候都会报这个错&#xff0c;解决了一下午终于搞定了&#xff0c;记录下。 首先是官方文档&#xff1a;Quickstart: Document Intelligence (formerly Form Recognizer) clien…

反序列化漏洞vulhub靶场serial

环境搭建 下载 https://download.vulnhub.com/serial/serial.zip 解压出来就是这种 你会得到一个这样的文件&#xff0c;这里使用VMware新建一个虚拟机&#xff0c;这里记录比较重要的几部分。 这里就是使用我们刚才下过来的。 漏洞过程详解 1.信息收集 打开靶机&#xff0…

IDEA切换分支,会影响当前在跑的项目吗?

说明&#xff1a;本文测试&#xff0c;在IDEA中运行项目&#xff0c;然后切换分支&#xff0c;是否会影响当前正在跑的项目 准备工作 首先&#xff0c;创建一个Git项目&#xff0c;接口如下&#xff1a; import org.springframework.web.bind.annotation.GetMapping; import…

13. 文本框和单选题

属性说明type指定元素的类型。text、password、checkbox、radio、submit、reset、file、hidden、image和button&#xff0c;默认为textname指定表单元素的名称value元素的初始值。type为radio时必须指定一个值size指定表单元素的初识宽度&#xff0c;当type为text或password时&…

3.Java面试题之AQS

1. 写在前面 AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是Java并发包&#xff08;java.util.concurrent&#xff09;中的一个抽象类&#xff0c;用于实现同步器&#xff08;如锁、信号量、栅栏等&#xff09;。AQS提供了一种基于FIFO队列的机制来管理线程的竞争和…

【RabbitMQ】路由模式(Routing)

一、基本概念 生产者&#xff08;Producer&#xff09;&#xff1a;发送消息到交换机的程序。在发送消息时&#xff0c;需要指定一个路由键。交换机&#xff08;Exchange&#xff09;&#xff1a;接收生产者发送的消息&#xff0c;并根据路由键将消息路由到与之匹配的队列。在…

1.kafka面试题之零拷贝

1. 写在前面 Kafka 是一个高性能的分布式消息系统&#xff0c;它使用了多种优化技术来提高数据传输效率&#xff0c;其中之一就是 “零拷贝”&#xff08;Zero Copy&#xff09;。零拷贝技术可以显著减少数据在内存中的复制次数&#xff0c;从而提高 I/O 操作的效率&#xff0…

volatile 关键字的两层语义

volatile 关键字的两层语义 1、可见性2、禁止指令重排序3、工作机制4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; volatile 关键字在Java并发编程中扮演着重要角色&#xff0c;它主要用于保证变量的可见性和禁止指令重排序。 1、…