Java日志学习三:Apache Log4j源码浅析
#输出到控制台log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender#输出到DailyRolling文件log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender?
???? LogManager静态代码块里:
???? 正式进入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)方法。
#指定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?
?