以编程方式加载 Log4j2 配置文件

2022-08-31 23:52:34

我想以编程方式从我的应用程序加载 Log4j2 XML 配置文件。

试过这个:

ConfigurationSource source = new ConfigurationSource();
source.setLocation(logConfigurationFile);
Configurator.initialize(null, source);

和这个:

ConfigurationSource source = new ConfigurationSource();
source.setLocation(logConfigurationFile);
ConfigurationFactory factory = (ConfigurationFactory) XMLConfigurationFactory.getInstance().getConfiguration(source);
ConfigurationFactory.setConfigurationFactory(factory);

但目前还没有任何效果。


答案 1

对于最新版本的log4j,以下是加载外部组件应使用的内容:log4j2.xml

String log4jConfigFile = System.getProperty("user.dir") + File.separator + "log4j2.xml";
ConfigurationSource source = new ConfigurationSource(new FileInputStream(log4jConfigFile));
Configurator.initialize(null, source);

答案 2

如果您有一个主入口点,此代码片段可能会为您节省一些麻烦。在创建任何记录器之前,必须触发 set 属性调用。此方法适用于类路径上的文件。

public class TestProcess {
    static {
        System.setProperty("log4j.configurationFile", "log4j-alternate.xml");
    }

    private static final Logger log = LoggerFactory.getLogger(TestProcess.class);

}

推荐