• SpringBoot日志文件


    1. 什么是日志文件

    在这里插入图片描述
    这个就是我们在控制台输出的日志信息

    2. 日志文件的作用

    ⽇志是程序的重要组成部分,想象⼀下,如果程序报错了,不让你打开控制台看⽇志,那么你能找到

    报错的原因吗?答案是否定的,写程序不是买彩票,不能完全靠猜,因此⽇志对于我们来说,最主要

    的⽤途就是排除和定位问题。

    当然日志在实际开发中还有许多功能:

    • 当一个程序的用户登录日志突然暴增,就可能是有人暴力破解账号,可以快速排查
    • 如果有人修改了数据不承认(或者忘了),记录的操作日志可以方便定位人和恢复数据
    • 记录程序的执行时间,方便后续对程序进行优化

    3. 自定义日志打印

    需要两步操作:

    • 在程序中得到⽇志对象。
    • 使⽤⽇志对象的相关语法输出要打印的内容

    在这里插入图片描述
    访问下这个页面

    在这里插入图片描述在这里插入图片描述
    日志就打印出来了。

    4. 日志级别

    ⽇志的级别分为:

    • trace:微量,少许的意思,级别最低;
    • debug:需要调试时候的关键信息打印;
    • info:普通的打印信息;
    • warn:警告,不影响使⽤,但需要注意的问题;
    • error:错误信息,级别较⾼的错误⽇志信息;
    • fatal:致命的,因为代码异常导致程序退出执⾏的事件(这个级别是不支持自定义打印的,是由系统来进行自动打印的)

    在这里插入图片描述

    在这里插入图片描述

    注意:因为日志级别默认是info级别的,所以低于此级别的日志是不会打印出来的,我们也可以设置日志默认级别。

    在这里插入图片描述
    运行后立即访问刚刚那个网站然后停止项目运行,否则你可能会找不到~
    在这里插入图片描述

    4.1 局部日志级别设置

    yml写法

    在这里插入图片描述

    properties写法:这个只是演示,后面我把这个删了,因为这个优先级高嘛,但是日常中我们使用yml其实更方便一点,因为有提示。

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

    4.2 局部和全局的日志级别设置比较

    这个似乎只能通过properties设置了,yml似乎会报错

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

    经过比较得出局部日志级别优先级高于全局。

    5. 日志持久化

    以上的⽇志都是输出在控制台上的,然⽽在⽣产环境上咱们需要将⽇志保存下来,以便出现问题之后

    追溯问题,把⽇志保存下来的过程就叫做持久化。

    想要将⽇志进⾏持久化,只需要在配置⽂件中指定⽇志的存储⽬录或者是指定⽇志保存⽂件名之后,

    Spring Boot 就会将控制台的⽇志写到相应的⽬录或⽂件下了。

    配置⽇志⽂件的保存路径:
    在这里插入图片描述
    路径可使用\\或者一个/.

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

    重启一次后,在此观察日志文件:

    在这里插入图片描述
    可以看到日志是通过追加方式进行写文件的,而不是覆盖。默认一个日志文件大小是10mb.
    当然我们也可以修改:

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

    6. 更简单的输出日志文件

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

    6.1 原理

    在这里插入图片描述
    在target目录下我们可以看到并没有@Slf4j而是变成了我们之前写的类似代码。

    这是因为JVM并不认识Java代码,只认识.class文件,而target就是idea将源代码转成的二进制文件,只不过被idea包装了一

    下,变成了让我们也能看的懂得Java代码。

    因此我们可以得出一个过程:idea先将源代码转化为一个个字节码文件,再交由JVM处理。而这也给了lombok可乘之机,

    在编译期就可以将一些注解生成想要的代码。

    7. lombok更多注解

    7.1 基本注解

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

    7.2组合注解

    @Data@Getter + @Setter + @ToString +@EqualsAndHashCode +@RequiredArgsConstructor +@NoArgsConstructor

    7.3 日志注解

    @Slf4j添加⼀个名为 log 的⽇志,使⽤ slf4j
  • 相关阅读:
    IDEA 连接 数据库
    【总线】AXI4第三课时:握手机制
    基于Java+SpringBoot+Thymeleaf+Mysql在线电子书阅读系统学习系统设计与实现
    C和指针 第14章 预处理器 14.10 编程练习
    IOS 快速获取加密方法,加密数据
    postman记录backup
    2023-9-12 完全背包问题
    LET‘S BUILD A NEW ENTRY GATE FOR THE PALACE
    Java:实现动态数组类算法(附完整源码)
    R语言确定聚类的最佳簇数:3种聚类优化方法
  • 原文地址:https://blog.csdn.net/qq_59689127/article/details/126336533