首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

Java日记学习三:Apache Log4j源码浅析

2013-12-26 
Java日志学习三:Apache Log4j源码浅析#输出到控制台log4j.appender.CONSOLEorg.apache.log4j.ConsoleAppe

Java日志学习三:Apache Log4j源码浅析
#输出到控制台log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender#输出到DailyRolling文件log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender?

???? LogManager静态代码块里:

    以DEBUG等级创建一个RootLogger,然后以RootLogger为参数创建一个Hierarchy类的实例。以Hierarchy为参数创建一个DefaultRepositorySelector类的实例,就是我们上面说的“LogManager有一个RepositorySelector对象。”读取配置文件。

???? 正式进入LogManager.getLogger(name)

    静态代码块完后LogManager.getLogger(name)由getLoggerRepository().getLogger(name)去实现。

    getLoggerRepository()会调用上面的DefaultRepositorySelector.getLoggerRepository(),也就是Hierarchy。Hierarchy.getLogger(name)最终由LoggerFactory.makeNewLoggerInstance(name)实现。

?

???? 单独说一下配置文件的读取,最终会进入PropertyConfigurator的doConfigure(Properties properties, LoggerRepository hierarchy)方法。

    解析log4j.reset,看hierarchy是否需要重置。解析log4j.threshold。Threshold是个全局的过滤器,它将把低于所设置的level的信息过滤不显示出来。解析log4j.rootCategory。设置日志级别和初始化所有appender。解析og4j.loggerFactory。可以自定义lLoggerFactory类,要实现LoggerFactory接口。解析log4j.category.???? log4j.logger.?????log4j.renderer.。前两者有什么区别?
    #指定com.neusoft包下的所有类的等级为DEBUG,对不同的类输出不同的文件log4j.logger.org.apache.commons=ERROR test1appender#指定com.jyz包下的所有类的等级为INFO,对不同的类输出不同的文件log4j.category.com.jyz=INFO test1appender#指定日志输出User对象,使用UserRendererlog4j.renderer.com.jyz.study.jdk.logger.User=com.jyz.study.jdk.logger.UserRenderer
    ?

?

热点排行