spring中实现桥接log4j2的步骤

1.我们从spring的ApplicationContext入手

在ApplicationContext中,在创造对象的时候就会获得日志,

this.logger = LogFactory.getLog(this.getClass());

2.在getLog方法中,就会去获得对应实现的工厂从而获得对应的log对象

public static Log getLog(Class clazz) throws LogConfigurationException {
    return getFactory().getInstance(clazz);
}

(1)首先获得工厂

第一步:在类路径中查找是否有commons-logging.properties
第二步:在jvm中查找参数是否有定义org.apache.commons.logging.LogFactory
第三步:在META-INF/services/org.apache.commons.logging.LogFactory,这个路径查找LogFactory的包地址(在spring-jcl包中有一个该文件,里面写的是实现的包名:org.apache.logging.log4j.jcl.LogFactoryImpl)
第四步:以上都没有的话,就自己创建一个org.apache.commons.logging.impl.LogFactoryImpl的对象

(2)commons.logging桥接log4j2过程

在spring-jcl中有LogFactoryImpl类,该类包含一个适配器,该适配器是log4j2的接口类,对象是jcl的LogAdapter类。LogAdapter类继承了log4j2的AbstractLoggerAdapter类,该类包含getlogger方法,调用该方法实现桥接

private final LoggerAdapter<Log> adapter = new LogAdapter();

3.总结

通过以上步骤,jcl成功桥接了log4j2的适配类,通过条用施佩雷的getLog方法,从而调用log4j2的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值