logback执行流程图
1. Get the filter chain decision.获得过滤链的策略。
依据过滤器链返回的结果做出不同的响应。共有三个响应结果:
FilterReply.DENY, 直接退出,不执行后续流程
FilterReply.NEUTRA,继续向下执行
FilterReply.ACCEPT,不进行步骤二,即类型输出类型检查。
2. Apply the basic selection rule. 执行基本的选择规则。
主要是比较下level,如果级别低直接退出后续执行。
3. Create a LoggingEvent object. 创建LoggingEvent对象。
这个对象包裹一些基本信息,包括日志界别,信息本身,可能的异常信息,执行时间,执行线程,其实一些随日志请求一起发出的数据和MDC。其中MDC是用来装一些额外的上下文信息的。
4.Invoking appenders.调用appenders。
此时logback会调用appender的doAppender,如果appender里有一些filer的话,此时也会调用。
5.Formatting the output.格式化输出结果。
通常情况下都是由layout层将event格式化成String型。当然也有意外比如说SocketAppender就是将event格式化成流。
6.Sending out the LoggingEvent.输出LoggingEvent
将格式化好的结果,输出到appender中记录的地址。