【前言】使用BasicConfigurator.configure();可以对rootlog进行默认的配置,但是我又想改变一下默认的rootlogger的配置。发现把log4j.properties放在classpath的目录下是可以实现的。
BasicConfigurator.configure()
BasicConfigurator.configure()方法使用最简的方法配置log4j环境。注:所谓配置log4j环境,就是指配置root logger,因为所有其它的logger都是root logger的后代,所以它们(默认情况下)都将继承root logger的性质。
BasicConfigurator.configure()完成的任务是:
- 用默认pattern创建PatternLayout对象p:
PatternLayout p = new PatternLayout("%-4r[%t]%-5p%c%x - %m%n"); - 用p创建ConsoleAppender对象a,目标是system.out,标准输出设备:
ConsoleAppender a = new ConsoleAppender(p,ConsoleAppender.SYSTEM_OUT); - 为root logger增加一个ConsoleAppender p:
rootLogger.addAppender(p); - 把root logger的log level设置为DEBUG级别:
rootLogger.setLevel(Level.DEBUG);
为了改变这个配置的配置,需要将log4j.properties(当然这个文件中有我想要的配置),放在classpath目录下:log4j.properties needs to be on the classpath where log4j can find it.
【疑问】
1. log4j.properties这个配置文件的名称是否不能变成其他的名称,像my.properties?
【后续解释】可以,通过configure指定log4j的配置文件路径和名称
PropertyConfigurator.configure(dir+"/conf/my.properties");
2. 为什么即使用了log4j.properties来制定root logger的配置信息,但是实际上,打印出root logger的配置信息可以看出是由两部分组成的,也就是说输出到console的配置还是保留的。为什么呢?
log4j.appender.A0=org.apache.log4j.RollingFileAppender
log4j.appender.A0.append=true
log4j.appender.A0.bufferSize=8192
log4j.appender.A0.bufferedIO=false
log4j.appender.A0.file=./root.log
log4j.appender.A0.immediateFlush=true
log4j.appender.A0.maxBackupIndex=10
log4j.appender.A0.maximumFileSize=512000
log4j.appender.A0.layout=org.apache.log4j.PatternLayout
log4j.appender.A0.layout.contentType=text/plain
log4j.appender.A0.layout.conversionPattern=%d{yyyy-MM-dd} %d{HH:mm:ss,SSS} %-4r %p: (%l) %m %n
log4j.appender.A0=org.apache.log4j.ConsoleAppender
log4j.appender.A0.immediateFlush=true
log4j.appender.A0.target=System.out
log4j.appender.A0.layout=org.apache.log4j.PatternLayout
log4j.appender.A0.layout.contentType=text/plain
log4j.appender.A0.layout.conversionPattern=%r [%t] %p %c %x - %m%n
log4j.rootCategory=DEBUG, A0, A0
【参考url】
http://bytes.com/topic/java/answers/16405-log4j-where-put-properties-file
http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/log4j.html