springboot中的日志

news2024/9/21 18:59:45

作者:~小明学编程 

文章专栏:spring框架

格言:热爱编程的,终将被编程所厚爱。
在这里插入图片描述

目录

为什么需要日志

如何使用日志功能

日志的打印

获取日志对象

使用日志对象打印日志

日志级别

为什么我们需要把日志分为如此多的种类呢?

 如何设置打印日志的级别

持久化日志

日志输出

前面我们介绍了如何创建我们的springboot项目以及springboot中的一些配置信息,接下来本章主要介绍的是springboot中的一个重要的功能那就是springboot中的日志功能。

为什么需要日志

我们在写代码的时候不可避免的会遇到bug在我们遇到bug的时候首先我们想到的就是去调试我们的代码,但是对于一个项目来说它的代码量是非常的大的咱们总不能从头开始去调试吧,我们首先需要定位到出现问题的部分然后再去调试那一块的代码,所以我们想要定位问题最快的方法就是去查看日志。

如何使用日志功能

 上面这幅图是我们刚启动我们的springboot项目的时候所打印出来的东西,这就是我们的日志,里面记录了我们的一些信息,比如我们启动的时间,或者一个方法运行完毕的时间。

日志的打印

想要打印日志需要有一下的步骤:

  1. 在一个类中先获取到日志打印对象(日志框架提供的日志对象,而日志加已经默认集成到 Spring Boot 当中了)。
  2. 使用日志对象提供的方法实现日志的打印。

获取日志对象

private final static Logger log = LoggerFactory.getLogger(UserController.class);

通过 Logger 类来得到日志对象,使用 slf4j 提供的日志对象,我们需要把类名给传进去这样是为了我们在打印日志内容的时候会将我们的相关的类信息也给打印出来。

使用日志对象打印日志

public class UserController {
    private final static Logger log = LoggerFactory.getLogger(UserController.class);
    @RequestMapping("/sayhi")
    public void sayHi() {
        log.trace("你好,trace");
        log.debug("你好debug");
        log.info("info");
        log.warn("warn");
        log.error("error");
    }
}

日志级别

日志的级别分为以下这几种:

trace:微量,少许的意思,级别最低
debug:需要调试时候的关键信息打印(调试日志)
info:普通的打印信息(普通信息日志)【系统默认的日志级别】
warn:警告,不影响使⽤,但需要注意的问题(警告日志)
error:错误信息,级别较⾼的错误⽇志信息(错误日志)
fatal:致命的,因为代码异常导致程序退出执⾏的事件。

为什么我们需要把日志分为如此多的种类呢?

1.⽇志级别可以帮我们筛选出重要的信息,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了,对于普通的调试⽇志和业务⽇志就可以忽略了,从⽽节省开发者信息筛选的时间。

2.⽇志级别可以控制不同环境下,⼀个程序是否需要打印⽇志,如开发环境我们需要很详细的信息,⽽⽣产环境为了保证性能和安全性就会输⼊尽量少的⽇志,⽽通过⽇志的级别就可以实现此需求。

 如何设置打印日志的级别

我们可以在配置文件中去设置我们的日志的级别:

logging.level.root=info

 上面我们在根路径中设置了info级别的日志,这样我们就会打印info以及一下级别的日志了。

当然我们也可以对指定路径的文件设置相应的级别,这里我们遵从局部大于整体的级别。

logging.level.java.com.example.dome.controller.DomeApplication=info

持久化日志

前面我们都是在控制台去查看日志的,但是这种方式肯定不适用于大型的项目,我们在开发的时候不可能去一直的去查控制台的,我们需要有一个文件将我们的日志给永久的保存下来这样我们才能够方便的查找。

logging.file.path=D:/.1logger/

上述我们就将我们的日志给保存到了D盘的一个文件的路径下面去了。

 接着我们就可以在我们的文件中找到我们的日志了。

日志输出

要输出日志的话,出了使用 日志对象,还可以使用 lombok 提供的 @Slf4j 注解,注解自动生成的对象是 log,这样就代替了我们LoggerFactory再去得到一个日志对象了。

@Controller
@ResponseBody
@Slf4j
public class UserController {
//    private final static Logger log = LoggerFactory.getLogger(UserController.class);
    @RequestMapping("/sayhi")
    public void sayHi() {
        log.trace("你好,trace");
        log.debug("你好debug");
        log.info("info");
        log.warn("warn");
        log.error("error");
    }
}

 

 

注解只是帮助我们省去了得到log的那一步。

Lombok 的其他注解:

注解
@Getter动添加 getter 法
@Setter动添加 setter 法
@ToString动添加 toString 法
@EqualsAndHashCode动添加 equals 和 hashCode 法
@NoArgsConstructor动添加参构造法
@AllArgsConstructor动添加全属性构造法,顺序按照属性的定义顺序
@NonNull属性不能为 null
@RequiredArgsConstructor动添加必需属性的构造法,final + @NonNull 的
属性为必需

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

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

相关文章

今天面试招了个25K的测试员,从腾讯出来的果然都有两把刷子···

公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-25k,面试的人很多,但平均水平很让人失望。看简历很多都是4年工作经验,但面试中,不…

《系统架构设计》-07-面向领域的技术设计

文章目录 1 实体与值对象1.1 实体对象1.1.1 唯一标识(Identity)1.1.2 可变性贫血模型充血模型 1.2 值对象1.3 示例(识别实体和值对象)1)识别实体对象2)提取值对象3)挖掘实体的关键行为4&#xf…

solidworks2022 - feature works 变灰的解决方法

文章目录 solidworks2022 - feature works 变灰的解决方法概述实验feature works 变灰问题的重现备注END solidworks2022 - feature works 变灰的解决方法 概述 feature works 用于step文件转零件. 一般是不同版本的solidworks交换文件的方法. 今天突然发现, 我自己转出的ste…

Spring框架使用总结

Spring框架使用 前言处理事务管理声明式事务:编程式事务: 框架核心常见注解 AOP( 面向切面编程)切面和通知有哪些类型?切面的类型通知类型AOP实现使用场景 IOC(管理所有的JavaBean)依赖注入(DI)…

像素比特行列置乱加密算法安全性分析

比特行列置乱加密 将MN大小的灰度图像每个像素值转换为8bit二进制,得到M8N大小的二值图像。 基于加密秘钥,生成随机序列TM和TN分别对二进制图像的行列进行置乱,生成置乱加密后的图像。 Logistic混沌序列加密: 选择明文攻击过程 …

Node内置模块 【path模块】

文章目录 🌟前言🌟path模块🌟引用模块🌟常用属性🌟path.sep🌟在MacOSX、 Unix、Linux操作系统上:🌟在 Windows 上: 🌟常用方法🌟将路径转换为对象…

【python视图1】networkx操作Graph图

一、说明 数据可视化需要显示种种数据,matplotlib负责曲线类画图,然而类似于图论的操作用什么方法。这里用networkx程序包完成。本文专门介绍这种程序包的用法。 二、生成图(Creating a graph) 2.1 创建一个没有节点和边的空图。…

Linux:centos 7:查看运行级别 控制init运行级别 已安装图形化以后设置开机进入图形化或命令行

0 target 关机状态,使用该级别时将关闭主机 1 rescue.target 单用户模式,不需要密码验证即可登录系统,多用于系统维护 …

HTTP 的工作原理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、简单 HTTP二、HTTP 连接请求 I请求Ⅱ 持久 HTTP并执行 HTTP默认浏览器连接设置总结 前言 在处理 Web 性能监控或优化时,了解 HTTP 协议的基础知…

leetcode每日一题——美团笔试题【3】

第一题: 股票的最大利润 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 1)的时候买入,在…

UWB隧道人员定位技术应用,施工作业安全精准保障

隧道施工的安全不仅关系到工程项目的质量和施工效率,也关系到我国的资金安全、施工人员和人民的生命财产安全。如何有效加强隧道施工的安全管理能力,成为隧道施工企业管理者最关心的问题。国家铁道局在《关于加强铁路隧道工程安全工作的若干意见》中指出…

人力资源软件的六个功能,你知道吗?

企业组织越来越多地转向通过人力资源软件来简化他们的人力资源运作。在疫情开始后,人力资源软件的采用尤其迅猛,因为组织希望无缝地管理他们的远程和混合员工。根据SkyQuest的调查人力资源技术市场预计到2028年将达到356.8亿美元。 如果您正在考虑采用人…

面试题思路分享以及延伸问题探讨三

面试题思路分享以及延伸问题探讨 1.前言2. 环形链表初阶2.1 审题2.2 代码实现以及紧急情况的处理方法2.3 延伸问题2.3.1 为什么slow和fast一定会遇上?2.3.2 走n步会是什么样的情况? 3. 环形链表进阶3.1 审题3.2 代码实现3.3 方法二:相交链表法 4. 复制带随机指针的链表4.1审题…

vue3组件二次封装Ui处理

vue 组件二次封装Ui处理 vue 组件二次封装Ui处理 在Vue开发中,我们常常需要使用UI框架提供的组件。但是UI框架的组件可能并不符合我们的需求,这时候就需要进行二次封装。下面是一些关于Vue组件二次封装Ui处理的技巧: 常规时候咱们使用组件…

深元AI盒子在矿山安全生产中实现皮带跑偏、异物、煤流量、大块煤等识别

摘要:随着技术的发展,矿山安全生产已经从传统的人工监测逐步转向现代化智能化。本文旨在探讨矿山安全生产AI盒子在皮带跑偏、异物、煤流量和大块煤之外的功能,以期进一步提高矿山生产的安全性和效率。 正文: 一、引言 矿山安全生…

【获奖案例巡展】信创先锋之星——中信证券基于国产图数据库构建企业图谱的应用实践

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量&#xff0…

vue2、vue3实现暗黑模式

1、序言 elementPlus、naive UI这些UI组件里面封装好了暗黑模式,直接使用相关api即可实现暗黑模式切换功能,而elementUI没有封装好,我们可以看看elementPlus、naive UI如何实现暗黑模式,然后在elementUI中模仿,从而实现…

【C++】模板初识

C模板初识 1.泛型编程2.函数模板2.1.函数模板概念2.2.函数模板格式2.3.函数模板使用的原理2.4.函数模板的实例化2.5.模板参数的匹配原则 3.类模板3.1.类模板格式3.2.类模板的实例化 1.泛型编程 在实际编程中,经常会用到交换函数。比如有整型值的交换,浮…

Nacos 鉴权系统源码讲解

目录 1. 介绍 2. Nacos SPI 鉴权机制 3. 后台管理 / HTTP 接口鉴权 4. 客户端 / GRPC 接口鉴权 1. 介绍 鉴权功能默认没有开启,开启后的效果就是 Nacos 的接口需要用户登录并且具有权限才能调用该接口。例如注册实例、发布配置等。 鉴权也就是 我是谁、我能干…

探讨接口测试颗粒度

偶然间在论坛上看到一个帖子,帖子内容如下: 假设现在有一个新增商品的接口,返回的参数中有新增商品的 id(每次返回的 id 都不一样)、success(判断是否成功,0 失败 1 成功) 1. 接口…