在没有System.setProperty或classpath的情况下设置Log4j 2属性文件位置?

时间:2017-09-01 09:31:29

标签: java logging log4j2

我正在从Log4j 1.2迁移到Log4j 2.8,我正在寻找一种在我的程序中设置属性文件位置的方法。在1.2中,这是使用

完成的
PropertyConfigurator.configure("path/to/log4j.properties");

然而,阅读文档,2.8中的属性文件配置似乎仅限于
a)位于classpath或
b)通过System属性(参见1

由于我有一些应用程序,其中部分系统有自己的配置并需要按需加载它,我想知道是否有办法在运行时使用属性文件配置Logmanager?

2 个答案:

答案 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());