• 【生日快乐】SpringBoot SpringBoot 提高篇(第二篇) 第5章 SpringBoot 日志 5.1 日志介绍 & 5.2 日志框架


    SpringBoot

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

    SpringBoot 提高篇(第二篇)

    第5章 SpringBoot 日志

    5.1 日志介绍
    5.1.1 记录日志的好处
    1. 记录应用系统日志主要有三个原因记录操作轨迹、监控系统运行状况、回溯系统故障。

      记录操作行为及操作轨迹数据,可以数据化地分析用户偏好,有助于优化业务逻辑,为用户提供个性化的服务。

      例如,通过 access.log记录用户的操作频度和跳转链接,有助于分析用户的后续行为。

    2. 全面有效的日志系统有助于建立完善的应用监控体系,由此工程师可以实时监控系统运行状况,及时预警,避免故障发生。

      监控系统运行状况,是指对服务器使用状态,如内存、CPU 等使用情况,应用运行情况如响应时间QPS 等交互状态﹔应用错误信息,如空指针、SQL异常等的监控。

      例如,在CPU使用率大于60%,四核服务器中load 大于4时发出报警,提醒工程师及时处理,避免发生故障。

    3. 当系统发生线上问题时,完整的现场日志有助于工程师快速定位问题。

      例如当系统内存溢出时,如果日志系统记录了问题发生现场的堆信息,就可以通过这个曰志分析是什么对象在大量产生并且没有释放内存,回溯系统故障,从而定位问题。

    5.2 日志框架

    【日志门面(日志的抽象层)】

    • JCL(Jakarta Commons Logging)(2014年后不再维护)
    • jboss-logging(不适合企业项目开发使用)
    • SLF4J(Simple Logging Facade for java)

    【日志实现】

    • Log4j
    • JUL(java.util.logging) (java.util.logging)(担心被抢市场,推出的)
    • Log4j2( apache开发的很强大,借了log4j的名,但很多框架未适配上)
    • Logback(与Log4j同一个人开发的新框架,做了重大升级)
    5.2.1 日志门面

    门面设计模式是面向对象设计模式中的一种,日志框架采用的就是这种模式,类似JDBC的设计理念。

    它只提供一套接口规范,自身不负责日志功能的实现。目的是让使用者不需要关注底层具体是哪个日志库来负责日志打印及具体的使用细节等。

    目前用得最为广泛的是slf4j

    5.2.2 日志库

    负责实现日志相关功能,主流日志库有三个分别为︰

    • log4j
    • log-jdk (java.util.logging.Logger)
    • logback。

    logback是最晚出现的,与log4j同一个作者,是log4j的升级版且本身实现了slf4j的接口

    5.2.3 日志适配器

    老工程直接使用日志库API完成日志打印,要改成业界标准的门面模式(如slf4j+logback) ,但是老工程代码打印日志地方太多难以改动,这是就需要一个适配器来完成从旧日志库的API到slf4j的路由,这样在不改动原有代码的情况下也能使用slf4j来统一管理日志(如:log4j-over-slf4j),后续自由替换具体日志库也不成问题。

    5.2.4 SLF4J 日志体系

    在开发的时候不应该直接使用日志实现类,应该使用日志的抽象层。

    具体参考SLF4J官方。https://www.slf4j.org/manual.html

    在这里插入图片描述

    下图是SLF4J结合各种日志框架的官方示例,从图中可以清晰的看出SLF4JAPI永远作为日志的门面,直接应用与应用程序中。

    在这里插入图片描述

    SpringBoot 的底层 spring-boot-starter-logging

    在这里插入图片描述

    可以看出,它依赖着三个日志框架:

    • slf4j
    • Logback
    • Log4j2

    它们的区别:

    • logback和log4j是日志实现框架,就是实现怎么记录日志的
    • slf4j-api提供了java所有日志框架的简单规范和标准(日志的门面设计模式)。说白了就是一个日志API(没有实现类),它不能单独使用:故必须结合logback和Log4j2日志框架

    【注意】

    Spring Boot采用了slf4j+logback的组合形式,Spring Boot也提供对JUL、log4j2、Logback提供了默认配置

    由于每一个日志的实现框架都有自己的配置文件,所以在使用SLF4j之后,配置文件还是要使用实现日志框架的配置文件。

  • 相关阅读:
    Jetpack DataBinding使用--Jetpack系列
    LeetCode221109_122、27. 移除元素
    征战MINI学习路线
    C++17 std::filesystem 用法指北
    反思: Google 为何把 SurfaceView 设计的这么难用?
    第4集丨做一个内心强大的人
    echarts树图的节点自定义图片,以及子节点挤在一起该怎么处理...
    Unreal Engine游戏引擎的优势
    基于工业级4G5G路由器大型设备远程无线监控方案
    通过CRM软件系统赢得销售机会的五大原则
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/127699463