认识springboot 之 了解它的日志 -4

news2024/12/22 14:24:15

前言

本篇介绍springboot的日志,如何认识日志,如何进行日志持久化,通过日志级别判断信息,了解Lombok插件的使用,通过Lombok自带注释更简洁的来完成日志打印,如有错误,请在评论区指正,让我们一起交流,共同进步!


文章目录

  • 前言
  • 1.日志的作用
  • 2. 识别日志信息
  • 3. 认识日志级别
  • 4. 日志持久化
  • 5. 认识 Lombok
  • 总结

本文开始

1.日志的作用

日志的作用:记录信息,方便以后查看;打印错误信息,方便自己找出错误;

2. 识别日志信息

先来认识springboot默认打印的日志:
日志的默认格式:

在这里插入图片描述日志级别:用来筛选日志信息

  • 日志级别:(info是默认日志级别)打印日志小于info日志级别的日志不会打印;

3. 认识日志级别

日志级别的作用:过滤信息,去掉业务不需要的日志;
日志级别:

trace: 微量,少许,日志级别最低;
debug: 调试日志级别;
info: 普通日志级别;
warn: 警告日志级别;
error: 错误日志级别
fatal: 致命日志级别,只要系统在崩溃时才会输入的日志级别,级别最高;

根据日志的作用,可能有时需要修改默认的日志级别:
修改方式:在配置文件中修改即可,logging.level+root/包名;

#修改项目日志默认级别
logging.level.root=warn
#修改项目中某一个目录的日志级别: logging.level+包名
logging.level.com.example.demo.controller=debug

思考:springboot为什么可以打印日志,并设置日志?

springboot中内置俩个日志框架:slf4j + LogBack;
slf4j框架作用:让开发者 使用 和 调用 的框架;- 操作不用考虑底层
LogBack框架作用:它最底层是实现日志相关操作的框架;- 例如:打印日志等底层操作;

4. 日志持久化

日志持久化:为防止日志的丢失,需要将日志存储到硬盘中,来实现日志持久化;

下面介绍两种持久化日志的方式:

  • 设置日志保存的路径:在对应的配置文件中设置
    生成的日志文件内容,会追加到旧日志下面;
logging.file.path=D:\\dp\\
  • 设置日志的保存文件名:下面是路径+文件名
logging.file.name=D:\\dp\\spr_boot.log

5. 认识 Lombok

Lombok : 一个java库,用来增强java性能;例如:通过注释来代替去写setter,getter等方法;

Lombok中好用的两个注解:@Data 与 @Slf4j

  • @Date组合注解:使用该注解,就包含了以下注解的功能;
    @Getter : ⾃动添加 getter ⽅法
    @Setter : ⾃动添加 setter ⽅法
    @ToString : ⾃动添加 toString ⽅法
    @EqualsAndHashCode : ⾃动添加 equals + hashCode ⽅法
    @RequiredArgsConstructor : 自动添加必要属性的构造方法 (final 与 @NonNull 属性为必须属性)
    @NoArgsConstructor :自动添加无参构造方法
    【注】@NonNull : 属性不能为 null

  • @Slf4j注释:该注释产生一个 日志对象,就获取日志对象log

// @Slf4j == private static Logger log = LoggerFactory.getLogger(Test.clss); 
// 不写注释就需要根据这行代码获取日志对象

Lombok为什么能实现呢?
Lombok 的 实现原理:

在编译阶段,Lombok 与 用户代码.java文件 一起生成字节码.class文件,
这个过程中Lombok将对应的注释功能,转换为了注释对应方法的代码;再一起在JVM上运行;

  • Lombok + .java =》.class =》JVM

总结

✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

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

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

相关文章

动手学深度学习—深度学习计算(层和块、参数管理、自定义层和读写文件)

目录 1. 层和块1.1 自定义块1.2 顺序块1.3 在前向传播函数中执行代码 2. 参数管理2.1 参数访问2.1.1 目标参数2.1.2 一次性访问所有参数2.1.3 从嵌套块收集参数 2.2 参数初始化2.2.1 内置初始化2.2.2 自定义初始化 2.3 参数绑定 3. 自定义层3.1 不带参数的层3.2 带参数的层 4. …

【PWN · 栈迁移】[BUUCTF][Black Watch 入群题]PWN

记一道栈迁移题目 前言 【PWN 栈迁移】[BUUCTF]ciscn_2019_es_2_Mr_Fmnwon的博客-CSDN博客 一、代码审计 总结信息如下: 1. 第12行存在栈溢出漏洞,刚好可以溢出覆盖到ebp和ret 2. 第9行可输入大量数据到bss段 二、思路过程 1.栈迁移 进能够覆盖e…

Nodejs 第八章(npm搭建私服)

构建npm私服 构建私服有什么收益吗? 可以离线使用,你可以将npm私服部署到内网集群,这样离线也可以访问私有的包。提高包的安全性,使用私有的npm仓库可以更好的管理你的包,避免在使用公共的npm包的时候出现漏洞。提高…

SAM(Segment Anything)大模型论文汇总

A Comprehensive Survey on Segment Anything Model for Vision and Beyond 论文:https://arxiv.org/abs/2305.08196 25页综述,198篇参考文献!52个开源项目!本文第一个全面回顾了分割一切模型(SAM)的研究和应用进展,…

AttributeError: module ‘PyQt5.QtGui‘ has no attribute ‘QMainWindow‘

场景描述: 这个问题是使用PyUIC将ui文件变成py文件后遇到的 解决办法: 改动1:把object改成QtWidgets.QMainWindow 改动2:增加__init__函数,函数结构如下: def __init__(self):super(Ui_MainWindow,self).…

vue03 es6中对数组的操作,vue对数据监控的原理(分别对对象和数组的监控)

在js中,对数组的操作一般都是固定的模式:常用的函数,具体的方法在这个文章中去看: http://t.csdn.cn/Fn1Ik 一般会用到的函数有: pop() 这个函数是表示把数组中的元素(数组&#xff…

Elasticsearch 全文检索 分词检索-Elasticsearch文章四

文章目录 官方文档地址refercence文档全文搜索体系match简单查询match 多词/分词单字段分词match多个词的逻辑控制match的匹配精度match_pharse_prefix分词前缀方式match_bool_prefixmulti_match多字段匹配 query string类型Interval类型DSL查询之Term详解聚合查询之Bucket聚合…

Java入门指南:Java语言优势及其特点

目录 1. Java语言简介及发展概述 2. Java语言的优势 2.1 可移植性 2.2 面向对象 2.3 安全性 2.4 大量类库 3. Java语言与C/C的区别 4. 初识Java程序入口之main方法 5. 注释、标识符、关键字 5.1 注释 5.2 标识符 5.3 关键字 1. Java语言简介及发展概述 Java是一种面…

天下风云出我辈,AI准独角兽实在智能获评“十大数字经济风云企业

时值盛夏,各地全力拼经济的氛围同样热火朝天。在浙江省经济强区余杭区这片创业热土上,人工智能助力数字经济建设正焕发出蓬勃生机。 7月28日,经专家评审、公开投票,由中共杭州市余杭区委组织部(区委两新工委&#xff…

【Java】数据结构篇:经典链表OJ题 |超详细图解+代码

博主简介:努力学习的预备程序媛一枚~博主主页: @是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】文章目录 1、获取链表的中间节点⭐2、单链表的逆置⭐3、判定链表是否是回文⭐4、链表分割5、合并两个有序链表6、链表中倒数第k个结点⭐7、判定链表相交8、判断链表带环⭐…

15、两个Runner初始化器和 springboot创建非web应用

两个Runner初始化器 两个Runner初始化器——主要作用是对component组件来执行初始化 这里的Component组件我理解为是被Component注解修饰的类 Component //用这个注解修饰的类,意味着这个类是spring容器中的一个组件,springboot应用会自动加载该组件。 …

一文读懂浏览器本地存储:Web Storage

一、 简介 二、localStorage 和 sessionStorage 2.1、区别 2.2、浏览器兼容性 三、使用说明 3.1、API介绍 3.2、浏览器查看 3.3、监听 四、存储 4.1、存储容量 4.2、存储性能 五、应用 5.1、使用习惯记录 5.2、首次打开提示 5.3、减少重复访问接口 六、总结 一、 …

在 3ds Max 中使用相机映射将静止图像转换为实时素材

推荐: NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 1. 在 Photoshop 中准备图像 步骤 1 这是我将在教程中使用的静止图像。 这是我的静态相机纸箱的快照。 静止图像 步骤 2 打开 Photoshop。将图像导入 Photoshop。 打开 Photoshop 步骤 3 单击套索工…

计算机网络基础(静态路由,动态路由,公网IP,私网IP,NAT技术)

文章目录 一:静态路由和动态路由二:静态路由的配置路由信息的方式演示三:默认路由四:公网IP和私网IP和NAT技术的基本理解 一:静态路由和动态路由 在说静态路由和动态路由前,我们需要来了解一下&#xff0…

近2年入侵13家电信公司的幕后黑手浮出水面

10月20日,网络安全公司赛门铁克刚披露了一个针对南亚电信公司的神秘APT(高级持续威胁)组织,一个名为 LightBasin 的黑客组织被确定为针对电信行业发起一系列攻击的幕后黑手,其目标是从移动通信基础设施中收集“高度特定…

【iOS】GCD深入学习

关于GCD和队列的简单介绍请看:【iOS】GCD学习 本篇主要介绍GCD中的方法。 栅栏方法:dispatch_barrier_async 我们有时候需要异步执行两组操作,而且第一组操作执行完之后,才能开始执行第二组操作,当然操作组里也可以包含一个或者…

JVM之三大垃圾回收算法

文章目录 前言一、复制算法二、标记清除三、标记整理 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍…

Django实现音乐网站 ⑶

使用Python Django框架制作一个音乐网站,在系列文章2的基础上继续开发,本篇主要是后台单曲、专辑、首页轮播图表模块开发。 目录 后台单曲、专辑表模块开发 表结构设计 单曲表(singe)结构 专辑表(album&#xff09…

安达发|APS生产派单系统对数字化工厂有哪些影响和作用

数字化工厂是当今制造业的热门话题,而APS软件则是这一领域的颠覆者。它以其独特的影响和作用,给制造业带来了巨大的改变。让我们一起来看看APS软件对数字化工厂有哪些影响和作用吧! 提高生产效率的神器 1.APS软件作为数字化工厂的核心系统&a…

Jenkins工具系列 —— 启动 Jenkins 服务报错

错误显示 apt-get 安装 Jenkins 后,自动启动 Jenkins 服务报错。 排查原因 直接运行jenkins命令 发现具体报错log:Failed to start Jetty或Failed to bind to 0.0.0.0/0.0.0.0:8080或Address already in use 说明:这里提示的是8080端口号…