我想以编程方式加载log4j 2 XML配置。
我的配置文件是好的,下面两种方法有效:第一,将其重命名为log4j2.xml,并将其放在类路径中(但我有多个,所以这是为了实验);第二,这样做(这是有效的,但我正在维护一些旧代码,宁愿尝试保持它们的机制不变)
static {
File _l4 = new File (DATA_DIR + File.separator + LOG_CONFIG_FILENAME);
System.setProperty("log4j2.configurationFile", _l4.toURI().toString());
}
从我在这里找到的东西来看,这个应该能用。
FileInputStream fileInputStream = new FileInputStream(pConfigFilename);
ConfigurationSource configurationSource = new ConfigurationSource(fileInputStream);
Configurator.initialize(null, configurationSource);
当I .toString()它的时候,它看起来确实加载了文件,它显示它已经加载了字节数--这恰好是配置文件的大小。但是没有一个工作。所有的日志记录都转到了stdout。所以它正在加载,但是没有生效。
1条答案
按热度按时间wqsoz72f1#
Configurator.initialize
仅在创建LoggerContext
之前才起作用。它应该在静态块中工作,如果你设置了
log4j2.configurationFile
属性。如果出于某种原因你需要在加载配置文件之前,你需要使用Configurator.reconfigure
。