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

  • 相关阅读:
    vue3 利用 Composition provide 实现祖先组件向后代组件传值
    28.1.1 开启查询日志
    如何升级到 Docker Compose v2
    拒绝水文!八大排序(三)【适合初学者】快速排序
    DDD技术方案落地实践 | 京东云技术团队
    【大咖说Ⅱ】中科院信工所研究员林政:大规模预训练语言模型压缩技术
    学习分享-微服务的相关概念
    ElasticSearch Filter Query过滤查询
    SIP事务中定时器的讨论
    Docker资源分配--Cgroup
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/125411286