• 【生日快乐】SpringBoot SpringBoot 提高篇(第二篇) 第5章 SpringBoot 日志 5.3 SpringBoot 的日志使用


    SpringBoot

    【千锋教育java教程SpringBoot2全套,springboot快速入门到项目实战视频教程】

    SpringBoot 提高篇(第二篇)

    第5章 SpringBoot 日志

    5.3 SpringBoot 的日志使用
    5.3.1 日志级别和格式

    从上面的分析,发现 Spring Boot默认已经使用了SLF4J + LogBack。

    所以开发者在不进行任何额外操作的情况下就可以使用SLF4J+ Logback进行日志输出。

    日志的级别分为 6 种:

    • TRACE:运行堆栈信息,使用率低
    • DEBUG:程序员调试代码使用
    • INFO︰记录运维过程数据
    • WARN︰记录运维过程报警数据
    • ERROR︰记录错误堆栈信息
    • FATAL︰灾难信息,合并计入ERROR

    举个栗子,编写Java 测试类进行测试

    创建一个新项目模块:

    在这里插入图片描述

    在这里插入图片描述

    勾一个 web 吧。

    在这里插入图片描述

    OK,一个全新的SpringBoot 工程。

    测试类:

    package com.dingjiaxiong;
    
    import org.junit.jupiter.api.Test;
    import org.junit.runner.RunWith;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    /*
    * 测试日志输出
    * SLF4J ⽇志级别从⼩到⼤trace,debug,info,warn,error
    * */
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    class Springboot07LogApplicationTests {
    
        Logger logger = LoggerFactory.getLogger(getClass());
    
        @Test
        public void testLog(){
            logger.trace("Trace 日志...");
            logger.debug("Debug 日志...");
            logger.info("Info 日志...");
            logger.warn("Warn 日志...");
            logger.error("Error 日志");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    已知日志级别从小到大为trace

    在这里插入图片描述

    当然这样测试可能不够明显,我们写一个简单的接口:

    package com.dingjiaxiong.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * ClassName: HelloSpringBoot
     * date: 2022/10/15 14:33
     *
     * @author DingJiaxiong
     */
    
    
    @RestController
    public class HelloSpringBoot {
        
        @RequestMapping("/hello")
        public String hello(){
            return "Hello,DingJiaxiong.";
        }
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    添加一些日志打印

    package com.dingjiaxiong.controller;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * ClassName: HelloSpringBoot
     * date: 2022/10/15 14:33
     *
     * @author DingJiaxiong
     */
    
    
    @RestController
    public class HelloSpringBoot {
    
        //获取日志对象Logger
        Logger logger = LoggerFactory.getLogger(getClass());
    
        @RequestMapping("/hello")
        public String hello(){
    
            logger.debug("debug...日志");
            logger.info("info...日志"); //服务器默认info,所以下面的会有,debug不会打印
            logger.warn("warn...日志");
            logger.error("error...日志");
    
    
    
            return "Hello,DingJiaxiong.";
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    启动服务器【修改端口为80】

    在这里插入图片描述

    访问一下接口

    在这里插入图片描述

    这次就很明显了

    SpringBoot 默认日志级别为INFO。【所以它只会打印info 或者比info更严重的错误,即warn 和 error】

    一般情况下,开发时候使用DEBUG,上线后使用INFO,运维信息记录使用WARN即可。

    下面就设置一下日志级别:

    # 开启debug模式,输出调试信息,常用于检查系统运行状况
    debug: true
    
    • 1
    • 2

    在这里插入图片描述

    重启服务器

    在这里插入图片描述

    这次就有debug了

    这次再访问接口

    在这里插入图片描述

    可以看到结果中还是没有我们自己的写的debug。

    【原因】

    虽然我们修改了启动的日志级别为debug,但是少了一个level

    日志系统通常提供了细粒度的控制

    在这里插入图片描述

    # 设置日志级别,root 表示根节点,即整体应用日志级别
    logging:
      level:
        root: debug
    
    • 1
    • 2
    • 3
    • 4

    再次启动服务器

    在这里插入图片描述

    好像debug 日志更多了,

    再次访问接口:

    在这里插入图片描述

    这次就打印了。

    如果root 后面接上info

    在这里插入图片描述

    当然默认就是info

    改成warn

    在这里插入图片描述

    开发者还可以设置日志组,控制指定的包对应的日志输出级别

    logging:
      # 设置日志组
      group:
        # 自定义组名,设置当前组中所包含的包
        mygroup: com.dingjiaxiong.controller
    
      level:
        root: warn
        # 为对应的组设置日志级别
        mygroup: debug
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    这意味着当前项目中,设置的组日志级别为debug,其他都是warn

    重启服务器,测试

    在这里插入图片描述

    这就个性化了。【简单来说,就是总体设置一下,然后每个包可以单独设置一下,可以对每个包分组,然后对组进行日志级别设置】

  • 相关阅读:
    网络安全(黑客)自学
    最新Win11安装安卓子系统详细教程
    SSM项目整合 文件上传
    19.0、C语言——指针笔试面试题
    接口测试之文件上传
    App性能指标(安装、冷启动、卸载、平均内存/cpu/fps/net)测试记录
    【C语言】strlen和sizeof的区别
    二维二硫化钼纳米片负载纳米银复合材料|二硫化钼碳纳米管复合材料|纳米金/磁性纳米颗粒修饰二硫化钼纳米片
    软件测试黑马程序员基础班-定义介绍,核心课程,计算机的组成
    [附源码]java毕业设计疫苗接种管理系统
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/127699474