• Spring之日志


    目录

    为什么要引入日志

    Spring中日志的使用 

     Spring内置的日志

    日志的级别 

    如何做到日志持久化

    小结 


    为什么要引入日志

    • 我们现实生活中,我们希望做任何事情都有迹可循,尤其在错误排除方面,所以引入了日志,是为了记录
    • 日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的原因吗?答案是否定的,写程序不是买彩票,不能完全靠猜,因此日志对于我们来说,最主要的用途就是排除和定位问题。

    除了发现和定位问题之外,我们还可以通过日志实现以下功能

    • 记录用户登录日志,方便分析用户是正常登录还是恶意破解用户。
    • 记录系统的操作日志,方便数据恢复和定位操作人。
    • 记录程序的执行时间,方便为以后优化程序提供数据支持。


    日志真实使用案例:
    关键节点上的关键数据日志记录举例:例如,比如咱们的教务系统,在注册时候不止要在教务系统添加一条用户记录,同时也会给比特论坛添加一条一模一样的用户记录,这样做的目的是为了实现一次注册,多处使用的目的。不需要用户在两边系统注册了,等于在程序中以极低的成本实现的用户数据的同步,但这样设计有一个致命的问题,用户在教务系统注册信息的时候,如果论坛挂了,那么用户的注册行为就会失败?因为用户在注册的时候需要同步注册到论坛系统,但论坛现在挂了,这个时候怎么办呢?
    最简单的解决方案,教务系统在注册的时候,不管论坛是否注册成功,都给用户返回成功,那这个时候如果论坛注册失败了怎么办?非常简单,如果注册失败了,记录一下日志,等论坛恢复正常之后,把日志给论坛的管理人员,让他手动将注册失败的用户同步到论坛系统,这样就最低成本的解决了问题。这就是日志的重要作用。
     

    Spring中日志的使用 

    Spring Boot 项目在启动的时候默认就有日志

    通过上述日志信息我们能发现以下 3 个问题:

    • Spring Boot 内置了日志框架(不然也输出不了日志)。
    • 默认情况下,输出的日志并非是开发者定义和打印的,那开发者怎么在程序中自定义打印日志呢?
    • 日志默认是打印在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢?

     Spring内置的日志

    • Spring Boot 中内置了日志框架 Slf4j,所以咱们可以直接在程序中调用 slf4j 来输出日志。

    我们通过自己调用日志对象来输出日志

     一种方便打印的日志格式

     

     

    日志的级别 

    • trace:微量,少许的意思,级别最低;
    • info:普通的打印信息;
    • debug:需要调试时候的关键信息打印;
    • warn:警告,不影响使用,但需要注意的问题;
    • error:错误信息,级别较高的错误日志信息;
    • fatal:致命的,因为代码异常导致程序退出执行的事件。

    •  而日志分级大概的道理也是一样的,有了日志级别之后就可以过滤自己想看到的信息了,比如设置日志级别为 error,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者的信息筛选时间。

    如何修改显示日志的级别

    在配置文件中去修改

    •  如果想修改全局的用 root: 日志级别
    • 日志的输出级别,默认是 info,就是我们不做任何修改
       

    如何做到日志持久化

    •  日志持久化,就是讲日志信息存储到文件中,可以方便我们查看

    小结 

    •  为什么有日志,其最大的作用就是帮我们排除错误,让我们程序发生了什么变得有迹可循,问别人的时候最好带上现象+日志
    • 明确在SpringBoot中如何使用日志(我们自己如何使用日志=调用日志对象+log.打印日志信息)其中我们可以使用{}这种方式来方便我们打印日志信息
    • 日志级别 ,可以通过设置显示日志的级别来排除那些不想看到的日志
    • 把日志放到文件中,做到日志持久化存储
  • 相关阅读:
    如何使用vuex
    Vue3 中如何加载动态菜单?
    Beego框架学习
    物联网知识复习
    js获取当前日期与7天后的日期
    无需训练、APP可玩,商品、车辆、菜品20+场景一键识别
    HTML概述_入门篇
    基于SSM+Vue的医院住院综合服务管理系统的设计与实现
    Flutter 开启web构建以及web的两种渲染模式
    【k8s】ingress-nginx通过header路由到不同后端
  • 原文地址:https://blog.csdn.net/qq_50985215/article/details/126568709