SpringBoot的日志级别你了解吗(自定义打印日志)?

1 SpringBoot日志介绍

⽇志是程序的重要组成部分,想象⼀下,如果程序报错了,不让你打开控制台看⽇志,那么你能找到报错的原因吗? 如果是简单的错误有可能找出来,但是对于开发中的大多数错误还是需要我们打开日志来发现和定位问题的。
springboot项目在启动的时候默认就会有日志输出:
SpringBoot的日志级别你了解吗(自定义打印日志)?_第1张图片

以上内容就是 Spring Boot 输出的控制台⽇志信息。

 本文介绍日志如何实现自定义输出,介绍日志的级别和使用

2 实现自定义日志打印

程序员自定义打印日志主要有两个步骤:

1 在程序中得到日志对象

2 使用日志对象的相关语法输出要打印的内容

2.1 得到日志对象

使用日志工厂函数LoggerFactory:

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

日志工厂函数中需要我们传递一个类的类型,方便知道日志的归属,发现、定位问题所在。注意Logger对象是org.slf4j包下的。(

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

SpringBoot中是内置了slf4j的,所以不用我们再手动的去添加依赖,我的maven中是没有添加slf4j的依赖但是项目中已经加入了所需要的maven:

 

2.2 使用日志打印对象

@RequestMapping("getall")
    public List getAll() {
        userLogger.info("=============这是userController中的info===========");
        return userService.getAll();
    }

当后端接收到请求后就会在后端打印出刚才自定义的日志信息:

 2.3 日志格式说明

3 日志级别

  • ⽇志级别可以帮你筛选出重要的信息,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了,对于普通的调试⽇志和业务⽇志就可以忽略了,从⽽节省开发者信息筛选的时间。
  • ⽇志级别可以控制不同环境下,⼀个程序是否需要打印⽇志,如开发环境我们需要很详细的信息,⽽⽣产环境为了保证性能和安全性就会输⼊尽量少的⽇志,⽽通过⽇志的级别就可以实现此需求。

3.1 日志级别以及使用

日志级别分为:

  1. TRACE: 最详细的日志级别,通常用于记录一些非常详细的调试信息,例如方法的入参、出参等。

  2. DEBUG: 用于记录调试信息,可以帮助你诊断问题。通常会记录一些关键操作的详细信息,但不会像TRACE级别那样详细。

  3. INFO: 用于记录应用程序的一般运行状态,比如启动信息、关键事件等。这是默认的日志级别。

  4. WARN: 用于记录一些可能的异常情况,这些情况不会影响应用程序的正常运行,但可能需要注意。

  5. ERROR: 用于记录错误信息,表示应用程序发生了一些错误或异常。这些错误可能会影响应用程序的正常运行。

  6. FATAL: 用于记录严重的错误,通常表示应用程序已经无法继续运行。

1-6这六种级别是按照日志级别排列的,级别越高收到的日志信息就越少,比如设置的是error级别的日志,那么就只能收到error和fetal级别的日志信息。

3.2 日志级别的设置

日志级别设置需要在配置文件中设置:

# 设置根日志级别
logging:
  level:
    root: INFO

# 设置特定包的日志级别
logging:
  level:
    org.springframework: DEBUG
    com.example: TRACE

可以设置根日志的级别也可以设置特定的包的日志级别。

现在设置根日志的级别是error看看是否还能看到info级别的日志:

SpringBoot的日志级别你了解吗(自定义打印日志)?_第2张图片

 启动项目后发现控制台没有任何日志信息,后端接收到请求后自定义的info级别信息也看不见

SpringBoot的日志级别你了解吗(自定义打印日志)?_第3张图片

 那么将自定义的日志级别换成error和fetal呢?

SpringBoot的日志级别你了解吗(自定义打印日志)?_第4张图片

 结果是可以看到控制台输出了error的日志

你可能感兴趣的:(Spring,spring,boot,java,spring)