• logback--进阶--03--日志打印步骤


    logback–进阶–03–日志打印步骤


    代码位置

    https://gitee.com/DanShenGuiZu/learnDemo/tree/master/logback-learn
    
    • 1

    1、步骤

    当用户调用 logger 的日志打印方法时,logback 框架所采取的步骤是怎么样的呢?

    现在我们分析当用户调用名为 “com.nobody.UserService” 的 logger 的 info() 方法时,logback 采取的步骤

    步骤1、获得过滤器链决策

    1. 如果过滤器存在,那么 TurboFilter 链会被调用。
    2. TurboFilter可以设置一个上下文范围阈值,或过滤掉某些日志
      1. 如果过滤器链的答复是 FilterReply.DENY,那么日志记录请求会被抛弃。
      2. 如果过滤器链的答复是 FilterReply.NEUTRAL,走步骤2。
      3. 如果过滤器链的答复是 FilterReply.ACCEPT,则跳过步骤2,直接跳至步骤3。

    步骤2、logger 级别比较规则

    在此步骤中,logback 将 logger 的有效级别与打印请求级别进行比较。
    1. 如果根据级别规则禁用了日志记录请求,丢弃该请求
    2. 如果请求打印日志的级别 小于 logger 设定的级别,丢弃该请求
    3. 如果请求打印日志的级别 大于等于 logger 设定的级别,走步骤3。

    步骤3、创建一个 LoggingEvent 对象

    1. 如果请求在先前的过滤器中存活下来了,则 logback 将创建一个 ch.qos.logback.classic.LoggingEvent 对象
    2. LoggingEvent 对象 包含请求的所有相关参数,例如
      1. 请求的 logger
      2. 请求级别
      3. 日志消息
      4. 可能与请求一起传递的异常
      5. 当前时间
      6. 当前线程
      7. 跟发出日志记录请求相关的类的各种数据以及MDC

    步骤4、调用 appenders

    创建 LoggingEvent 对象后,logback 将调用所有能用的 appenders 的 doAppend() 方法。

    步骤5、格式化输出

    1. 被调用的 appender 负责格式化日志记录事件。但是,一些但不是全部 appender 将格式化日志记录事件的任务委托给 layout。

    2. layout 会格式化 LoggingEvent 实例,并以字符串形式返回结果。

      1. 注意:某些 appender,例如 SocketAppender 不会将日志记录事件转换为字符串,而是将其序列化。因此,它们没有 layout,也不需要 layout。

    步骤6、发出 LoggingEvent

    日志记录事件被完全格式化后,每个 appender 会将其发送到其目的地

  • 相关阅读:
    【路径规划】A*算法 Java实现
    3D 沙盒游戏之避障踩坑和实现之旅
    RS232通讯转485通讯接线心得
    算法-合并区间
    从Redis分布式缓存实战入手到底层原理分析、覆盖大厂面试考点
    【晨读算法】为什么经常看到使用朴素贝叶斯公式的时候把分母忽略了?
    Hexo + Butterfly 键入在线聊天功能
    Linux的TCP连接问题解决调优观察
    云计算和大数据处理
    CSS(二)css选择器+css背景
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/125411286