我正在从log4j 1.2移至log4j 2.8,正在寻找一种在程序中设置属性文件的位置的方法。在1.2中,这是使用
完成的PropertyConfigurator.configure("path/to/log4j.properties");
但是,阅读文档,在2.8中通过属性文件的配置似乎仅限于
a)位于班级路径或
b)通过系统属性(请参阅1)
由于我有一些应用程序,其中一部分系统具有其自己的配置并且需要按需加载它,所以我想知道是否有一种使用属性文件在运行时配置LogManager的方法?
还有另一种指定log4j2
配置文件位置的方法 -
org.apache.logging.log4j.core.config.Configurator.initialize(null, "path/to/log4j2.properties");
唯一的预防点是Configurator
类不是公共API的一部分。因此,它可能会在以后的版本中删除。
上面的代码在 log4j2 version 2.8.2
中工作。
使用:
File f = new File("E:/config/log4j2.xml");
LoggerContext context = (LoggerContext) LogManager.getContext(false);
context.setConfigLocation(f.toURI());