• SpringBoot 日志文件


    1. 日志的作用

    日志是程序的重要组成部分,在程序报错的时候,如果我们不看日志,是很难排查出错误的,除非你真的是很有经验.所以日志最主要的作用就是排除和定位问题.

    日志提供的功能:

    1. 记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。
    2. 记录系统的操作⽇志,⽅便数据恢复和定位操作⼈。
    3. 记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持

    2. 日志怎么用

    在我们启动 SpringBoot 项目的时候就会输出日志:
    在这里插入图片描述

    3. 自定义日志打印

    主要分两个步骤:

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

    3.1 得到日志对象

    得到日志对象 Logger ,它来自于 slf4j,不要导错了包,在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    3.2 使用日志对象提供的方法打印日志

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    @ResponseBody
    public class UserController {
    
    //1. 先得到日志对象(来自 slf4j)
        private static final Logger log =
            LoggerFactory.getLogger(UserController.class); //设置当前的类型
    
        @RequestMapping("/sayhi")
        public void sayHi(){
            //2. 使用日志对象提供的打印方法进行日志打印
            log.trace("我是 trace");
            log.debug("我是 debug");
            log.info("我是 info");
            log.warn("我是 warn");
            log.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

    在这里插入图片描述

    有些没打印,因为他只会打印跟他同级别的或者比他级别高的日志,他这里默认是 info 级别.

    3.3 日志格式说明

    在这里插入图片描述

    4. 日志级别

    反馈一些需要的日志,并不需要把所有的都打印出来

    就像是如果你是一家 2 万人的公司的老板,需要每天看他们的反馈信息,难道每个人都看吗?这显然看不完,你只需要看一些领头的就行…

    4.1 日志级别分类

    日志级别分为:

    1. trace: 微量,少许的意思(级别最低)
    2. debug: 调试日志
    3. info: 普通信息日志
    4. warn: 警告日志
    5. error: 错误日志
    6. fatal: 致命的日志(系统输出的日志,不能自定义打印)

    日志级别的顺序:
    在这里插入图片描述

    越往上接收到的消息就越少。

    4.2 日志级别的配置

    ⽇志级别配置只需要在配置⽂件中设置“logging.level”配置项即可:

    # 设置全局的日志级别
    logging.level.root=warn
    
    # 设置局部文件夹的日志级别
    logging.level.com.example.demo.UserController=trace
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述在这里插入图片描述

    之前的 info 级别日志就没打印了.

    注意:当存在局部日志级别和全局的日志级别设置时,那么当访问局部日志时,使用的是局部日志级别.也就是 局部日志优先级 > 全局日志级别

    5. 日志持久化

    以上的⽇志都是输出在控制台上的,然⽽在⽣产环境上咱们需要将⽇志保存下来,以便出现问题之后追溯问题,把⽇志保存下来的过程就叫做持久化。

    日志持久化(将日志永久的保存到磁盘的某个位置)
    1: 在配置文件中设置日志保存的路径,当设置了保存路劲之后,那么日志就会自动进行持久化
    2: 在配置文件中设置日志保存的名称,日志会自动进行持久化

    #设置日志保存的目录 写法一
    logging.file.path=D:\\log
    
    • 1
    • 2
    # 设置日志保存的目录写法二
    logging.file.path=D:/log
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    打开这个文件:
    在这里插入图片描述

    # 设置日志的保存名称
    logging.file.name=D:\\log\\spring-boot.log
    
    • 1
    • 2

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    6. 更简单的实现自定义日志的打印

    6.1 准备工作,添加 lombok 到项目中

    如果你当初没有添加 lombok 又不想重开项目,有这样一种办法,下载插件 EditStarters:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    6.2 使用 @Slf4j 得到日志对象

    在这里插入图片描述

    import lombok.extern.slf4j.Slf4j;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    @ResponseBody
    @Slf4j //替代了之前需要通过 LoggerFactory.getLogger 操作
    public class UserController {
    
    //1. 先得到日志对象(来自 slf4j)
    //    private static final Logger log =
    //        LoggerFactory.getLogger(UserController.class); //设置当前的类型
    
        @RequestMapping("/sayhi")
        public void sayHi(){
            //2. 使用日志对象提供的打印方法进行日志打印
            log.trace("我是 trace");
            log.debug("我是 debug");
            log.info("我是 info");
            log.warn("我是 warn");
            log.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

    6.3 使用 log 对象自定义打印日志

    在这里插入图片描述在这里插入图片描述

    .class文件,他是给我们转换了的:在这里插入图片描述

    Java 程序的运⾏原理:
    在这里插入图片描述
    Lombok 的作⽤如下图所示:
    在这里插入图片描述

    6.4 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
  • 相关阅读:
    冰冰学习笔记:反向迭代器的模拟
    C函数
    .NET MAUI 安卓应用开发初体验
    【Android】安卓开发的前景
    西门子系列PLC与C#winform通信类
    基于WEB的考研论坛网站的设计与实现
    超级详细的mysql安装和配置教程
    sqlibs安装及复现
    重磅硬核 | 一文聊透对象在 JVM 中的内存布局,以及内存对齐和压缩指针的原理及应用
    动作捕捉系统用于地下隧道移动机器人定位与建图
  • 原文地址:https://blog.csdn.net/chenbaifan/article/details/125742336