设置log4j 2属性文件位置,无系统



我正在从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());

最新更新