log4j可以用Java的properties进行配置。
其解析流程大致如下:
1.解析properties,将整个配置文件信息读取到一个Properties对象中
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
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函数,真正这些配置项如何发挥作用,需要对其内部结构有一定的了解,关于这一点可参看另一篇文章。