Logger源码阅读(二)之PropertyConfigurator解析配置文件

log4j可以用Java的properties进行配置。

其解析流程大致如下:

1.解析properties,将整个配置文件信息读取到一个Properties对象中

 1   public
 2   void doConfigure(String configFileName, LoggerRepository hierarchy) {
 3     Properties props = new Properties();
 4     FileInputStream istream = null;
 5     try {
 6       istream = new FileInputStream(configFileName);
 7       props.load(istream);
 8       istream.close();
 9     }
10     ...
11   }
View Code

2.配置日志仓库级别

log4j.threshold=error

 将日志仓库级别设置为error

3.配置RootLogger

log4j.rootLogger=info,LOGFILE,CONSLE

info:RootLogger的日志级别

LOGFILE(CONSLE):RootLogger的日志输入器,名字可自定义,之后将会根据名称进行更具体的定义 

log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.MaxFileSize=100MB
log4j.appender.LOGFILE.MaxBackupIndex=10
log4j.appender.LOGFILE.File=${log.dir}/${log.file}
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %-5p [%t] (%C.%M:%L) %x - %m%n

针对LOGFILE日志输出器进行配置

4.配置LoggerFactory

log4j提供一个默认的LoggerFactory,一般可不配置。

5.配置Render及对指定类进行配置

除了对仓库,RootLogger进行了配置,还可以对具体的类所对应的Logger进行配置。

log4j.logger.org.apache.hadoop = INFO,LOGFILE1
log4j.appender.LOGFILE1=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE1.MaxFileSize=100MB
log4j.appender.LOGFILE1.MaxBackupIndex=10
log4j.appender.LOGFILE1.File=${log.dir}/${log.file}
log4j.appender.LOGFILE1.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE1.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %-5p [%t] (%C.%M:%L) %x - %m%n

针对org.apache.hadoop进行了特别配置,其级别为INFO,输出器为LOGFILE1,再然后对LOGFILE1进行一些细化配置。

总结:配置仅仅是解析一个配置文件,然后调用一系列的set函数,真正这些配置项如何发挥作用,需要对其内部结构有一定的了解,关于这一点可参看另一篇文章。







原文地址:https://www.cnblogs.com/fullstack/p/3911192.html