我正在从Log4j 1.2迁移到Log4j 2.8,我正在寻找一种在我的程序中设置属性文件位置的方法。在1.2中,这是使用
完成的PropertyConfigurator.configure("path/to/log4j.properties");
然而,阅读文档,2.8中的属性文件配置似乎仅限于
a)位于classpath或
b)通过System属性(参见1)
由于我有一些应用程序,其中部分系统有自己的配置并需要按需加载它,我想知道是否有办法在运行时使用属性文件配置Logmanager?
答案 0 :(得分:3)
还有一种方法可以指定log4j2
配置文件位置 -
org.apache.logging.log4j.core.config.Configurator.initialize(null, "path/to/log4j2.properties");
唯一的预防措施是Configurator
类不是公共API的一部分。因此,它可能会在将来的版本中删除。
以上代码适用于最新的 log4j2 version 2.8.2
。
答案 1 :(得分:1)
使用:
File f = new File("E:/config/log4j2.xml");
LoggerContext context = (LoggerContext) LogManager.getContext(false);
context.setConfigLocation(f.toURI());