SpringBoot开发——使用@Slf4j注解实现日志输出
文章目录
- 1、Lombok简介
- 2、SLF4J简介
- 3、实现步骤
- 3.1 创建SpringBoot项目
- 3.2 添加依赖
- 3.3 使用 @Slf4j 注解
- 3.4 输出日志信息
- 4、结论
在现代Java开发中,日志记录是至关重要的。它不仅帮助开发者调试代码,还便于监控系统运行状态和性能。
Lombok 和 SLF4J 的结合提供了一种优雅的解决方案,可以极大地简化日志记录的过程。
1、Lombok简介
Lombok 是一个用于减少Java代码中常见冗余的库。它通过注解来自动插入开发者通常需要手动编写的代码,如getter、setter、构造函数等。对于日志记录,Lombok 提供了一个 @Slf4j 注解,可以自动创建一个 Logger 实例。
2、SLF4J简介
SLF4J(Simple Logging Facade for Java)是一个日志框架的简单抽象层,允许最终用户在部署其应用时使用所希望的日志框架。SLF4J 的设计目标是简单和高效,它不提供任何具体的日志实现,而是作为一个接口存在,具体的实现可以是 Logback、Log4j 或其他。
3、实现步骤
3.1 创建SpringBoot项目
创建一个SpringBoot项目,选择Spring Web
3.2 添加依赖
pom.xml文件中添加Lombok依赖:
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version>
</dependency>
3.3 使用 @Slf4j 注解
在类上使用 @Slf4j 注解,Lombok 将会自动创建一个名为 log 的静态 final Logger 对象:
package com.log;import lombok.extern.slf4j.Slf4j;@Slf4j
public class MyLog {}
3.4 输出日志信息
现在可以自由地在代码中使用 log 变量来输出不同级别的日志信息了:
public void testLog(){log.trace("This is a trace message.");log.debug("This is a debug message.");log.info("This is a info message.");log.warn("This is a warn message.");log.error("This is a error message.");
}
运行后,控制台会看到信息:

怎么只有3条信息?前2条呢?因为默认的日志级别为info,trace和debug级别就没有显示出来。如果想更改日志级别,可以在application.yml文件配置日志打印级别,比如改成trace,如下:
logging:level:root: trace
重新启动服务,这次就会在日志中看到:

从控制台输出的结果可以初步分析出,trace级别最低,可以打印所有级别的日志。
在整个日志体系中,级别从低到高分为:TRACE < DEBUG < INFO < WARN < ERROR,
级别越底,可打印的日志就更多;相反,级别越高,输出的日志就更少。
从实际情况来看,太多的日志打印也未必是一件好事,有时候会把服务器磁盘撑爆,导致服务宕机。
通常我们会配置INFO级别,在关键的位置打印相关信息即可。
4、结论
Lombok 和 SLF4J 的结合使用极大地简化了Java中的日志记录过程。
相关文章:
SpringBoot开发——使用@Slf4j注解实现日志输出
文章目录 1、Lombok简介2、SLF4J简介3、实现步骤3.1 创建SpringBoot项目3.2 添加依赖3.3 使用 Slf4j 注解3.4 输出日志信息 4、结论 在现代Java开发中,日志记录是至关重要的。它不仅帮助开发者调试代码,还便于监控系统运行状态和性能。 Lombok 和 SLF4J …...
VSCode拉取远程项目
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
【已解决】SpringBoot3项目整合Druid依赖:Druid监控页面404报错
文章标题 问题描述原因分析解决方案参考资料 问题描述 最近,笔者在SpringBoot3项目中整合Druid连接池时,偶然翻到一条介绍Druid监控的短视频,兴致盎然之下尝试设置了一下Druid监控。 But,按照视频中提供的yml参数对照设置&#x…...
【算法】滑动窗口—找所有字母异位词
“找到字符串中所有字母异位词”的难度为Medium,看一下题目: 给定一个字符串 S 和一个非空字符串 T,找到 S 中所有是 T 的字母异位词的子串,返回这些子串的起始索引。 所谓的字母异位词,其实就是全排列,原题…...
Vue安装及环境配置【图解版】
欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words! 目录 一.node.js的安装…...
绕过CDN查找真实IP方法
1、前言 在新型涉网案件中,我们在搜集到目标主站之后常常需要获取对方网站的真实IP去进一步的信息搜集,但是现在网站大多都部署了CDN,将资源部署分发到边缘服务器 实现均衡负载,降低网络堵塞,让用户能够更快地访问自己…...
Qt与MQTT交互通信
MQTT全称是(Message Queuing Telemetry Transport),即消息队列遥测传输协议 是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,并且该协议构建于TCP/IP协议之上,常用于互联网中&am…...
dd 命令:复制和转换文件
一、dd 命令简介 dd 命令是一个在 Unix 和类 Unix 系统中用于复制文件和转换文件的命令行工具。它的功能非常强大,可以用于各种目的,例如创建镜像文件、备份和恢复数据、复制数据等。 dd 是一个用于读取、转换和写入数据的工具,通常…...
文件系统(磁盘 磁盘文件 inode)
文章目录 磁盘看看物理磁盘磁盘的存储结构 对磁盘的储存进行逻辑抽象inode号文件名 -> inode判断文件在哪个分区 磁盘 电脑中存在非常多的文件,被打开的文件只是少量的。 没有被打开的文件,在磁盘中放着,那么文件是如何存取? …...
ThreeJs创建圆环
ThreeJs除了创建基本的长方体,球形,圆柱等几何体,也可以创建一些特殊的几何体,比如圆环,多边体,这节就来讲怎么用Threejs绘制出圆环。首先依然是要创建出基础的组件,包括场景,相机&a…...
React实现类似Vue的路由监听Hook
React实现类似Vue的路由监听Hook 监听路由变化;React Hook封装,返回回调函数,新旧路由为函数参数; 代码 import { useEffect, useRef } from react; import { useHistory, useLocation } from react-router-dom;/*** 监听路由变…...
Visual Studio打开项目的一些小技巧
Visual Studio(VS)是一款功能强大的集成开发环境,许多刚入门C/C的小白也会使用这款软件进行写代码,然而它的操作并不简单,下面将讲解一下VS打开项目文件的一些小技巧。 目录 🎁创建空项目 ❤️①点击“创建新项目” ❤️②点击“…...
前端页面中使用 ppt 功能,并且可以随意插入关键帧
要在前端页面中实现类似 PowerPoint 的功能,并且能够随意插入和控制关键帧动画,你可以使用 HTML、CSS 和 JavaScript 结合的方式来创建一个互动幻灯片系统。以下是一个详细的实现方案,包括如何插入和控制关键帧动画: 1. 基础 HTM…...
机器学习:opencv--图像金字塔
目录 一、图像金字塔 1.图像金字塔是什么? 2.有哪些常见类型? 3.金字塔的构建过程 4.图像金字塔的作用 二、图像金字塔中的操作 1.向下采样 2.向上采样 3.注意--无法复原 三、代码实现 1.高斯金字塔向下采样 2.高斯金字塔向上采样 3.无法复…...
linux安全软件Hydra使用教程
Hydra 是一个强大的网络登录工具,常用于渗透测试,支持对多种服务和协议(如 SSH、FTP、HTTP 等)进行暴力crack攻击。它可以通过字典攻击来测试用户名和密码的有效性。以下是关于如何使用 Hydra 的基本步骤和示例: 1. 安…...
【ShuQiHere】从晶体管到逻辑门:数字电路的构建之旅
【ShuQiHere】 现代计算机和电子设备的基础是逻辑电路(Logic Circuits),它们执行信息处理和运算任务。在这些电路的核心,是晶体管(Transistors) 和 逻辑门(Logic Gates)。通过理解这…...
PDF扫描版文字识别OCR
PDF扫描版文字识别OCR 最近需要有对PDF扫描版进行文字可识别的需求,这里介绍一款工具挺好用的 这是一款开源的OCR工具 github地址 https://github.com/hiroi-sora/Umi-OCR 主要功能及特点 免费:本项目所有代码开源,完全免费。方便&#…...
Synchronized由什么样的缺陷? Java Lock是怎么弥补这些缺陷的?
synchronized 的缺陷 Synchronized 在 Java 中是最基础的线程同步机制,尽管简单易用,但也存在一些缺陷和局限性: 性能开销: synchronized 内部实现的监视器锁可能导致不必要的线程上下文切换和频繁竞争,从而引起性能下…...
联合仿真(FMI,FMU)资料收集
本文地址:https://blog.csdn.net/t163361/article/details/142262888 最近在研究使用Unity导入FMU模块进行仿真的功能。做功能前先尽可能收集下资料。 FMI标准 官方网站 github标准库 FMI标准由Modelica协会主导,具体介绍 FMI目前有三个标准 FMI1:20…...
Android Radio2.0——动态列表回调(七)
上一篇文章我们主要介绍了电台动态列表的获取流程,这里我们主要处理对应的回调流程以及扫描流程。 1)通过 getDynamicProgramList() 方法获取动态列表。 2)按照动态列表的内容,循环调用 scan() 方法执行向上调台,直到列表中的内容搜索完成。 3)根据 RadioManager.Program…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
