zoukankan      html  css  js  c++  java
  • commons-logging 结合 log4j, 初始化生命周期 初探

    -------commons-logging----------

    Log log=LogFactory.getLog(clazz);

        LogFactory这是个抽象日志工厂,更像个工具? 通过线程上下文,找jvm属性是否指定工厂-》配置文件是否有-》meta-inf/service是否有[ 有个默认的 impl.LogFactoryImpl].   它再来discover找LogImpl(具体的日志实现),还是通过jvm属性是否指定-》配置文件是否有;否则default [log4jlogger,..]顺序。假设指定了是impl.log4jlogger。

    -----------   log4jLogger-(broker) -----------------

             log4jLogger类被加载,并实例化,getLogger()-->实际上org.apache.log4j.Logger.getlogger(xx).

    ----------log4j---------------

    而logger需要委托LogManager.

                    先加载类LogManager,静态初始化DomConfigurator,它来找到(  jvm属性,classpath )log4j.xml的uri,和默认的resposity为参数,进行configure。

                   configure借助dombuilderFactory.来解析log4jEntity. 并把解析的logger对象结果,存在resposity的hashtable中。

             继续委托,logmanager,getlogger(xx), 本次及以后的getLogger,就直接在loggerResposity中直接获取到了。

        

  • 相关阅读:
    MySQL++:MySQL 复合索引、普通索引总结
    AutoCAD 二次开发之python(学习中)
    APScheduler 学习笔记
    pylint 定制化配置/使用 -待整理
    JDK和CGLIB动态代理区别
    Java 类加载过程
    判断字符串是否是数字类型
    Java 并发编程锁工具
    花式写挂
    WC2021 题目清单
  • 原文地址:https://www.cnblogs.com/luyi/p/3681950.html
Copyright © 2011-2022 走看看