您的位置:首页 > 其它

log4j(1.2.17版本) 加载配置文件

2013-03-22 17:24 190 查看
log4j 一般初始化logger都是这样:Logger logger = Logger.getLogger(Log4jTest.class); 红色部分是类名,这个类名可以是任何已存在类的类名,并且这个类名与我们需要打log的类没有关系。举个栗子:
class A {
// 空类
}

class B {
// 空类
}

class Test {
Logger aLogger = Logger.getLogger(A.class);
Logger bLogger = Logger.getLogger(B.class);

void doLog() {
aLogger.info("a");
bLogger.info("b");
}
}


若需要将这两种不同的log写到不同文件,只需要在log4j.properties中进行配置就可,不单独进行配置的话,打在默认文件中(可参考:http://hjh5885900.iteye.com/blog/1405453)。

那么,log4j是什么时候加载log4j.properties的?当然,肯定是在初始化的时候,就上面的例子来说,只能是在Logger aLogger = Logger.getLogger(A.class);的时候。debug代码,发现LogManager.getLogger(clazz.getName());然后跟进代码到LogManager中,找到一个static代码块。另外,缺省的文件名有两个:log4j.properties和log4j.xml。对于log4j.properties有一个注释:@deprecated
This variable is for internal use only. It will become package protected in future versions. 总之可以用。

在static块中,先把配置文件loader成url = Loader.getResource(DEFAULT_CONFIGURATION_FILE);然后config:OptionConverter.selectAndConfigure(url,
configuratorClassName,LogManager.getLoggerRepository()); 就方法名而言,就是选择和配置。在这个方法中先初始化configurator,有个说明Implemented
by classes capable of configuring log4j using a URL。然后configurator.doConfigure(url, hierarchy);使用的是PropertyConfigurator这个类实现的方法,然后开始加载配置项。

大概就是这样了,菜鸟的第一篇学习笔记,望大家指点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: