springboot日志

1、日志用途 

  • 故障排查和调试:当项目出现异常或者故障时,日志记录可以快速帮助我们定位到异常的部分以及知道异常的原因。
  • 性能监测和优化:通过在关键代码路径中添加日志记录,可以了解应用程序的性能表现,并根据性能表现优化程序。
  • 安全审计和监控:通过监视和分析系统日志,可以检测和识别潜在的安全威胁,如入侵、恶意行为或非法访问等非法行为。
  • 数据统计和分析:通过对日志信息进行统计和分析,可以获取关于用户行为、系统使用情况和业务趋势等有价值信息并分析。

2、日志框架

日志框架常见的两个概念:日志门面(Logging Facade)和日志实现(Logging Implementation)

日志门面是一个抽象层,它定义了一组统一的日志接口,用于在应用程序中记录日志它的作用是将应用程序代码与具体的日志实现解耦,使得应用程序代码不直接依赖于某个具体的日志框架。通过使用日志门面,可以在运行时灵活地切换不同的日志实现,而无需修改应用程序的代码。

日志实现是指具体的日志框架的实现,它实现了日志门面所定义的接口,并提供了实际的日志记录功能不同的日志实现提供了不同的配置选项、功能和性能特性。开发人员可以根据项目需求选择合适的日志实现,并使用相应的配置进行日志记录。

要使用日志门面,需要在应用程序中引入相应的日志门面库(SLF4J和Commons Logging),并通过配置文件或代码设置具体的日志实现(Log4j和Logback)这样,应用程序就可以通过调用日志门面的接口来记录日志,而具体的日志记录将由所配置的日志实现来处理。这种分离的设计允许开发人员更方便地切换和管理日志框架,并提供了更大的灵活性和扩展性。

3、日志信息

4、日志级别 

  • trace:级别最低,意为微量少许
  • debug:需要调试时打印的信息
  • info:普通打印信息(默认)
  • warn:警告信息
  • error:错误信息,级别较高
  • fatal:致命的,代码异常导致退出,系统级别的日志级别,无法手动控制

以上日志级别由上往下依次增强,而日志级别越高,控制台打印出的日志信息就越少,但打印出的日志信息越重要

项目设置的日志级别默认为 INFO,也就是控制台只打印收到的INFOWARNERRORFATAL级别的日志,而TRACEDEBUG级别的日志不进行打印。

日志级别配置只需要在配置文件中设置 1ogging.leve1 配置项就行。

项目重启后就可以看到debug日志

5、日志打印

在程序中获取日志对象需要使用日志工厂LoggerFactory

// 这里的Logger类输入org.slf4j包下的,不可导错包
private Logger logger = LoggerFactory.getLogger(TestController.class);

public void someMethod() {log.trace("trace 级别");log.debug("debug 级别");log.info("info 级别");log.warn("warn 级别");log.error("error 级别");
}

6、日志持久化 

# 日志保存名称
logging:file:name: D:\\home\\springboot.log

7、lombok日志输出 

7.1、添加lombok依赖

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

如果想向创建项目那样引入依赖,又是社区版 IDEA ,可以先安装一个插 EditStarters,然后在 pom.xml 文件中右键选择 Generate,选择 Edit Starters,选择 OK,然后就是熟悉的添加依赖的界面

 7.2、使用 @Slf4j 注解输出日志

@Controller
@ResponseBody
@Slf4j
public class UserController {@RequestMapping("/login")public void func1() {log.trace("trace等级日志");log.debug("debug等级日志");log.info("info等级日志");log.warn("warn等级日志");log.error("error等级日志");}
}

注意:如果使用 @Slf4j 注解的话,需要使用 log 对象调用各种方法,这是 lomlok提供的对象名

通过加一个注解就能使得获取日志对象操作变得简单,lombok 究竟是如何做到这一点的能,注解的背后又是什么呢

通过查看目录 target 答案就被揭晓,我们知道 target 实际上就是编译好的字节码文件目录,JVM 最后真正执行的就是字节码文件

这是编译好的字节码文件,可以发现 @Slf4j注解不见了,代码里出现了老版获取日志文件的代码

@Controller
@ResponseBody
public class UserController {private static final Logger log = LoggerFactory.getLogger(UserController.class);public UserController() {}@RequestMapping({"/login"})public void func1() {log.trace("trace等级日志");log.debug("debug等级日志");log.info("info等级日志");log.warn("warn等级日志");log.error("error等级日志");}
}

7.3、lombok原理

  • 对于一个普通的Java程序来说,当用户写好代码之后进行编译,然后生成一个.class为后缀的字节码文件,将其放到JVM虚拟机上去运行就可以让程序跑起来了

  • 对于lombok框架支持后,它就会与普通的java程序一同进行编译,然后生成.class为后缀的字节码文件

 7.4、lombok更多注解

  • 基本注解
注解作用
@Getter⾃动添加 getter ⽅法
@Setter⾃动添加 setter ⽅法
@ToString⾃动添加 toString⽅法
@EqualsAndHashCode⾃动添加 equals 和 hashCode ⽅法
@NoArgsConstructor⾃动添加⽆参构造⽅法
@AllArgsConstructor⾃动添加全属性构造⽅法,顺序按照属性的定义顺序
@NonNull属性不能为 null
@RequiredArgsConstructor⾃动添加必需属性的构造⽅法,final + @NonNull 的属性为必需
  • 组合注解
注解作用
@Data@Getter + @Setter + @ToString +@EqualsAndHashCode +@RequiredArgsConstructor +@NoArgsConstructor
  • 日志注解
注解作用
@Slf4j添加⼀个名为 log 的⽇志,使⽤ slf4j

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

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

相关文章

四、HTML 属性

属性是 HTML 元素提供的附加信息。 一、HTML 属性 HTML 元素可以设置属性属性可以在元素中添加附加信息属性一般描述于开始标签属性总是以名称/值对的形式出现&#xff0c;比如&#xff1a;name"value"。 二、 属性实例 HTML 链接由 <a> 标签定义。链接的地…

网约车“卷”向:滴滴、T3、麦田商旅们的下一个十年

配图来自Canva可画 近期&#xff0c;东北冰雪大世界、圣索菲亚教堂和中央大街等景点人气“爆棚”&#xff0c;为了方便南方“小土豆”出行&#xff0c;东北多地延长了公交、地铁的运营时间&#xff0c;同时呼吁本市市民文明待客&#xff0c;开网约车的东北大哥都成了“夹子音”…

Python贪吃蛇小游戏(PyGame)

文章目录 写在前面PyGame入门贪吃蛇注意事项写在后面 写在前面 本期内容&#xff1a;基于pygame的贪吃蛇小游戏 实验环境 python3.11及以上pycharmpygame 安装pygame的命令&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygamePyGame入门 pygam…

初识STL

目录 ​&#x1f4a1;STL &#x1f4a1;STL六大组件 &#x1f4a1;三大组件介绍 &#x1f4a1;容器 &#x1f4a1;算法 &#x1f4a1;迭代器 &#x1f4a1;示例 &#x1f4a1;STL C STL&#xff08;标准模板库&#xff09;是一套功能强大的 C 模板类&#xff0c;提供了…

IO进程线程 day4 文件IO与目录操作

1.使用标准IO完成两个文件拷贝 #include <head.h> int main(int argc, const char *argv[]) {//判断输入是否合法if(argc>3){printf("输入不合法\n");return -1;}//定义两个文件指针&#xff0c;用于读写FILE *fp1NULL;FILE *fp2NULL;if((fp1fopen(argv[1]…

如何评估 RAG 应用的质量?最典型的方法论和评估工具都在这里了

随着 LLM(Large Language Model)的应用逐渐普及&#xff0c;人们对 RAG(Retrieval Augmented Generation)场景的关注也越来越多。然而&#xff0c;如何定量评估 RAG 应用的质量一直以来都是一个前沿课题。 很显然&#xff0c;简单的几个例子的对比&#xff0c;并不能准确地衡量…

【操作系统xv6】学习记录--实验1 Lab: Xv6 and Unix utilities--未完

ref:https://pdos.csail.mit.edu/6.828/2020/xv6.html 实验&#xff1a;Lab: Xv6 and Unix utilities 环境搭建 实验环境搭建&#xff1a;https://blog.csdn.net/qq_45512097/article/details/126741793 搭建了1天&#xff0c;大家自求多福吧&#xff0c;哎。~搞环境真是折磨…

金和OA C6 UploadFileEditorSave.aspx 文件上传漏洞复现

0x01 产品简介 金和OA协同办公管理系统软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效率的核心思想,为用户提供一整套标准的办公自动化解决方案,以帮助…

实现最高效的数据转换:深入了解Achronix JESD204C解决方案

作者&#xff1a;Manish Sinha&#xff0c;Achronix战略规划与业务发展部 长期以来&#xff0c;Achronix为不同行业的数据密集型和高带宽应用提供了创新性的FPGA产品和技术&#xff0c;并帮助客户不断打破性能极限。其中一些应用需要与先进的模拟/数字转换器&#xff08;ADC&a…

UI自动化测试框架搭建

今天给大家分享一个seleniumtestngmavenant的UI自动化&#xff0c;可以用于功能测试&#xff0c;也可按复杂的业务流程编写测试用例&#xff0c;今天此篇文章不过多讲解如何实现CI/CD&#xff0c;只讲解自己能独立搭建UI框架&#xff0c;需要阅读者有一定的java语言基础&#x…

【力扣100】46.全排列

添加链接描述 class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 思路是使用回溯if not nums:return []def dfs(path,depth,visited,res):# 出递归的条件是当当前的深度已经和nums的长度一样了&#xff0c;把path加入数组&#xff0c;然后出递归if …

Java 将Excel转换为TXT文本格式

TXT文件是一种非常简单、通用且易于处理的文本格式。在处理大规模数据时&#xff0c;将Excel转为TXT纯文本文件可以提高处理效率。此外&#xff0c;许多编程语言和数据处理工具都有内置的函数和库来读取和处理TXT文件&#xff0c;因此将Excel文件转换为TXT还可以简化数据导入过…