如何以编程方式加载log4j2 XML配置文件并使其生效

iaqfqrcu  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(192)

我想以编程方式加载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。所以它正在加载,但是没有生效。

wqsoz72f

wqsoz72f1#

Configurator.initialize仅在创建LoggerContext之前才起作用。
它应该在静态块中工作,如果你设置了log4j2.configurationFile属性。如果出于某种原因你需要在加载配置文件之前,你需要使用Configurator.reconfigure

相关问题