Spring Boot 日志

Spring Boot 日志

​ 在 Spring Boot 里面是有一个内置了的日志框架的,所以才能运行的时候在控制台打印出来。默认情况下的日志是系统定义和打印的,但我们也可以自行自定义打印日志。

日志的好处:

1、发现问题和定位问题;☆(最常见,最实用)

2、记录用户的登录信息,方便大数据分析;

3、记录操作日志,方便追溯操作人;

4、记录方法的执行时间,方便后续程序的优化。

文章目录

  • Spring Boot 日志
    • 一、日志打印
      • 1.1、在程序中得到打印日志的对象
      • 2.1、日志级别
    • 二、在配置里面配置日志 (日志使用)
    • 三、日志持久化
    • 四、更简单的日志输出——lombok
    • 五、lombok原理分析

一、日志打印

在程序中自定义日志

1.1、在程序中得到打印日志的对象

首先需要在程序中使用 日志工厂 LoggerFactory:

private static Logger logger = LoggerFactory.getLogger(LoginController.class);

.getLogger() 里面是当前类,当前类.class

注意:在引用日志工厂的时候需要在 orj.slf4j 这个包下面导入,不要导入错包

image-20230730164405592

使用 slf4j 框架说明:

image-20230730170724763

​ 在 Spring Boot 中 slf4j 相当于一个门面,访问里面的日志实现首先需要通过门面这个渠道才能访问到后面的日志实现。就好比如日常生活需要网购,网购都需要借助平台才能具体的访问到商家进行购物,这里的 slf4j 是一个道理,只有进入 slf4j 这个包才能进行后面一下的操作,具体实现的日志是哪一个这个 Spring Boot 系统自动使用的,默认情况下使用的是 logback。

2.1、日志级别

​ 日志对象打印的方法有很多种,他们每一种都是有级别的,简单理解就是过滤掉冗余不需要的日志,可以自己自定义想看的日志类型方便排查问题,他们级别分别是:

image-20230730173208841

​ 打印的日志内容也是从低到高,就比如说,打印的是 info 级别,那么info 级别->error 级别的日志都会打印出来,后面以此类推。

里面的 fatal 是调用不出来的,因为他直接是致命程序运行不了出现终断退出等现象,不是程序员可以调用的,这个方法是系统里面自己调用的

@Controller
@ResponseBody
public class LoginController {private static Logger logger = LoggerFactory.getLogger(LoginController.class);//localhost:9090/login.html@RequestMapping("/login") // url 与前端的 ajax 参数 url 要一致public String login(String username, String password) { // SpringBoot可以直接传参自动获得request对象调用getparameter方法logger.trace("日志级别 trace");logger.debug("日志级别 debug");logger.info("日志级别 info");logger.warn("日志级别 warn");logger.error("日志级别 error");}
}

打印日志结果及日志格式说明:

在这里插入图片描述

​ 从日志结果信息来看,日志默认级别是 info ,只有info之后才有日志内容,

总结日志自定义打印:

1、使用 日志工厂 这个对象 LoggerFactory,导包是导 orj.slf4j 这个包;

2、根据这个对象调用方法,调用的方法有5种,就是这个日志级别

二、在配置里面配置日志 (日志使用)

​ 日志的级别配置,只需要在配置文件里面设置 logging.level 即可。

# 配置日志
logging:level:root: error

这个代码表示,root 在这个项目属于根目录也就是说所有项目目录级别都是配置的 error级别。

logging:level:root: errorcom:example:demo:controller: info

这个代码表示,在指定路径下的项目程序设置的日志是 info 级别;当 root 和 指定路径同时在的时候优先执行指定的目录。

三、日志持久化

​ 在控制台里面输出的是都不能长期保存,idea 一关日志就没了,但是在之后的生产环境中需要把日志长期保存下来,以便后续可以追溯问题,那么把日志保存下来的过程就叫做持久化。

在yml配置文件里配置日志文件的保存路径:

# 配置日志
logging:file:path: E:\file # 日志保存路径

​ 这样他就可以在指定的目录生成日志文件了。Spring Boot 就会将控制台的日志写在相应的目录下。

# 配置日志
logging:file:name: E:\file\spring Boot.log

​ 这是个文件设定名称,可以在保存日志的时候自定义名称,当有多个日志的时候,Spring Boot 它会自动在后面加上数字,非常的方便。

四、更简单的日志输出——lombok

​ Spring Boot 大多数都是可以用注解解决问题的,输出日志也是不例外,之前使用 日志工厂 LoggerFactory.getLogger(xxx.class) ,如果需要多个不同类的日志那么这样添加起来就很麻烦,这里就是用更简单的日志输出方式,使用lombok 提供的注解 @slf4jlog 对象快速的打印自定义日志。

1、首先添加 lombok 的依赖在 pom.xml 中

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

2、使用注解 @Slf4j ,输出日志

@Controller
@ResponseBody
@Slf4j
public class LoginController {//    private static Logger logger = LoggerFactory.getLogger(LoginController.class);@RequestMapping("/login") public String login(String username, String password) { log.trace("日志级别 trace");log.debug("日志级别 debug");log.info("日志级别 info");log.warn("日志级别 warn");log.error("日志级别 error");}
}

​ 使用了注解就不必再使用日志工厂了,但是程序是使用的 log 对象进行输入日志,并且只有 log 对象才能输出,这是 lombok 提供的对象名。

五、lombok原理分析

​ lombok 的实现原理,它是在 java 整个程序中的编码阶段进行处理的

image-20230731123741147

​ 它在编译的时候生成taget 目录,看看生成字节码的里面的代码

image-20230731124018678

​ 这样就可以说明 lombok 在编译期间的时候把注解 @slf4j 给替换掉了,生成字节码文件的时候又自动把日志厂的对象给编译在代码中。这些都是因为 lombok 通过遵循 jdk 编译期增强的规范,实现了一个 java 源代码在生成字节码的时候的功能增强。其中就比如: @slf4j;@Setter/@Getter …

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.rhkb.cn/news/74239.html

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

相关文章

QT编写的串口助手

QT编写的串口助手 提前的知识 创建UI界面工程 找帮助文档 添加串口的宏

亚马逊品牌推荐金计划:通过亚马逊外营销活动赚取奖金!

亚马逊美国站发布公告称新推出的品牌推荐金计划可以让卖家在通过亚马逊外营销活动的销售中获得奖金&#xff0c;当卖家将非亚马逊营销流量引导至亚马逊时&#xff0c;您将获得促销产品以及客户在接下来的两周内购买的任何品牌产品平均销售额的10%的奖金&#xff0c;以下是公告内…

【NLP】训练chatglm2的评价指标BLEU,ROUGE

当进行一定程度的微调后&#xff0c;要评价模型输出的语句的准确性。由于衡量的对象是一个个的自然语言文本&#xff0c;所以通常会选择自然语言处理领域的相关评价指标。这些指标原先都是用来度量机器翻译结果质量的&#xff0c;并且被证明可以很好的反映待评测语句的准确性&a…

ubuntu服务器配置ftp服务

需求&#xff1a;配置ftp服务用于在windows电脑上直接浏览、下载、上传ubuntu服务器上的文件&#xff0c;用于文件共享&#xff0c;方便实用 效果&#xff1a;用户打开windows资源管理器后输入ftp://xxx.xxx.xxx.xxx &#xff08;公网IP地址&#xff09;后&#xff0c;即可浏览…

ChatGPT及其工作原理;OpenAI申请注册商标GPT-5,引发关注

&#x1f989; AI新闻 &#x1f680; OpenAI申请注册商标GPT-5&#xff0c;引发关注 摘要&#xff1a;OpenAI已在上月18日申请注册商标GPT-5&#xff0c;显示该模型将提供文本生成、自然语言理解、语音转录、翻译、分析等功能。此前OpenAI曾表示尚未开始训练GPT-4的后继者GPT…

Atlas200DK A2联网实战

文章目录 1.Atlas原始网络信息2. 开发板联网2.1 使用Type-c 连接开发板2.2 修改本地网络适配器2.3 修改开发板网络信息2.4 测试外网连接 1.Atlas原始网络信息 Type-C 网口 ETH0 网口 ETH1 网口 2. 开发板联网 2.1 使用Type-c 连接开发板 使用xshell 等ssh终端登录开发板&…

(树) 剑指 Offer 33. 二叉搜索树的后序遍历序列 ——【Leetcode每日一题】

❓剑指 Offer 33. 二叉搜索树的后序遍历序列 难度&#xff1a;中等 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树&#xff1…

Linux lvs负载均衡

LVS 介绍&#xff1a; Linux Virtual Server&#xff08;LVS&#xff09;是一个基于Linux内核的开源软件项目&#xff0c;用于构建高性能、高可用性的服务器群集。LVS通过将客户端请求分发到一组后端服务器上的不同节点来实现负载均衡&#xff0c;从而提高系统的可扩展性和可…

PHP正则绕过解析

正则绕过 正则表达式PHP正则回溯PHP中的NULL和false回溯案例案例1案例2 正则表达式 在正则中有许多特殊的字符&#xff0c;不能直接使用&#xff0c;需要使用转义符\。如&#xff1a;$,(,),*,,.,?,[,,^,{。 这里大家会有疑问&#xff1a;为啥小括号(),这个就需要两个来转义&a…

智能制造企业如何建立大客户管理模型?

01、大客户管理依然是智能制造企业经营的黄金定律 《连线》杂志创始人凯文凯利&#xff08;Kevin Kelly&#xff09;在《技术元素》一书中写道&#xff1a;“数量不是目的&#xff0c;质量才是根本&#xff0c;重视1%的超级用户才是提高效率的关键。” 根据“二八定律”&…

filebeat介绍

1、filebeat概述 Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置&#xff0c;收集日志事件&#xff0c;并将它们转发到Elasticsearch或 Logstash或kafka进行索引 1.1 Filebeat两个主要组件 prospector 和 harvester。 prospector&a…

C++---list常用接口和模拟实现

list---模拟实现 list的简介list函数的使用构造函数迭代器的使用list的capacitylist element accesslist modifiers list的模拟实现构造函数&#xff0c;拷贝构造函数和迭代器begin和endinsert和eraseclear和析构函数 源码 list的简介 list是用双向带头联表实现的一个容器&…

C—数据的储存(下)

文章目录 前言&#x1f31f;一、练习一下&#x1f30f;1.例一&#x1f30f;2.例二&#x1f30f;3.例三&#x1f30f;4.例四 &#x1f31f;二、浮点型在内存中的储存&#x1f30f;1.浮点数&#x1f30f;2.浮点数存储&#x1f4ab;&#xff08;1&#xff09;.二进制浮点数&#x…

提高生产线效率:PDM系统的工艺优化智慧

在现代制造业中&#xff0c;提高生产线效率是企业追求高质量和降低成本的重要目标。PDM系统&#xff08;Product Data Management&#xff0c;产品数据管理&#xff09;作为一款强大的数字化工具&#xff0c;发挥着工艺优化智慧的作用&#xff0c;帮助企业实现生产线效率的提升…

C# 回文链表

234 回文链表 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 示例 2&#xff1a; 输入&…

TPlink云路由器界面端口映射设置方法?快解析内网穿透能实现吗?

有很多网友在问&#xff1a;TPlink路由器端口映射怎么设置&#xff1f;因为不懂端口映射的原理&#xff0c;所以无从下手&#xff0c;下面小编就给大家分享TPlink云路由器界面端口映射设置方法&#xff0c;帮助大家快速入门TP路由器端口映射设置方法。 1.登录路由器管理界面&a…

性能测试/负载测试/压力测试之间的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …

Amazon Aurora Serverless v2 正式发布:针对要求苛刻的工作负载的即时扩展

我们非常兴奋地宣布&#xff0c;Amazon Aurora Serverless v2 现已面向 Aurora PostgreSQL 和 MySQL 正式发布。Aurora Serverless 是一种面向 Amazon Aurora 的按需自动扩展配置&#xff0c;可让您的数据库根据应用程序的需求扩展或缩减容量。 亚马逊云科技开发者社区为开发者…

Hudi Flink SQL源码调试学习(1)

前言 本着学习hudi-flink源码的目的&#xff0c;利用之前总结的文章Hudi Flink SQL代码示例及本地调试中的代码进行调试,记录调试学习过程中主要的步骤及对应源码片段。 版本 Flink 1.15.4Hudi 0.13.0 目标 在文章Hudi Flink SQL代码示例及本地调试中提到&#xff1a;我们…

2023网络安全学习路线 非常详细 推荐学习

首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有几门&#xff0c;有些人会倒在学习 linux 系统及命令的路上&#xff0c;更多的人会倒在学习语言上&#xff1b; 2、知识点掌握程度不清楚 对于网络安…