3.解析logback.xml配置文件入口

一、前言

前面介绍了slf4j相关的知识点, 提到了实现模块是通过SLF4JServiceProvider进行自定义日志框架的, 本节就来介绍logback的LogbackServiceProvider

二、源码解析

LogbackServiceProvider

public class LogbackServiceProvider implements SLF4JServiceProvider {
   
    public void initialize() {
   
        // 日志上下文
        defaultLoggerContext = new LoggerContext();
        // 设置名称:default
        defaultLoggerContext.setName(CoreConstants.DEFAULT_CONTEXT_NAME);
        // 初始化日志上下文
        initializeLoggerContext();
        // 标记上下文已启动, 顺便发送启动事件
        defaultLoggerContext.start();
        markerFactory = new BasicMarkerFactory();
        mdcAdapter = new LogbackMDCAdapter();
        // set the MDCAdapter for the defaultLoggerContext immediately
        defaultLoggerContext.setMDCAdapter(mdcAdapter);
    }
    
}
  1. 构建了一个logback中最核心的类LoggerContext, 默认名字为default
  2. 进行初始化, initializeLoggerContext
  3. 标记上下文已启动, 顺便发送启动事件

核心的部分是初始化日志上下文initializeLoggerContext

private void initializeLoggerContext() {
   
    try {
   
        try {
   
            // 解析配置文件
            new ContextInitializer(defaultLoggerContext).autoConfig();
        } catch (JoranException je) {
   
            Util.report("Failed to auto configure default logger context", je);
        }
        // LOGBACK-292
        if (!StatusUtil.contextHasStatusListener(defaultLoggerContext)) {
   
            StatusPrinter.printInCaseOfErrorsOrWarnings(defaultLoggerContext);
        }
        // contextSelectorBinder.init(defaultLoggerContext, KEY);

    } catch (Exception t) {
    // see LOGBACK-1159
        Util.report("Failed to instantiate [" + LoggerContext.class.getName() + "]",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncleqiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值