• 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 会将其发送到其目的地

  • 相关阅读:
    Cadence Allegro DXF结构图的导入详细教程
    Flutter桌面开发 — macOS平台App打包上架发布AppStore
    应用软件运维服务方案(word原件)
    python3.8安装selenium报错
    unreal engine oculus 在vr场景中fade in , fade out
    大事务导致数据库恢复时间长
    使用matlab辨识工具来估算震动系统的传递函数
    OpenHarmony UI动画-recyclerview_animators
    【洛谷 P1029】[NOIP2001 普及组] 最大公约数和最小公倍数问题 题解(更相减损术)
    Linux文件搜索命令find、which和whereis应用
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/125411286