log4j2配置构建器而不是xml文件

时间:2017-06-15 16:52:53

标签: log4j2

我几乎完全遵循了这里的说明 -

http://logging.apache.org/log4j/2.x/manual/customconfig.html

在“使用带有自定义ConfigurationFactory的ConfigurationBuilder初始化Log4j”

下的部分中

它在这个页面上说

The below example overrides the getConfiguration() method to return a 
Configuration created by the ConfigurationBuilder. This will cause the 
Configuration to automatically be hooked into Log4j when the LoggerContext 
is created. In the example below, because it specifies a supported type of 
"*" it will override any configuration files provided.

但我不太清楚这意味着什么...... 我无法使用我的自定义配置工厂构建配置而不是log4j2.xml。我已经尝试将该文件设置为空或删除它,并且我收到“未找到记录配置”错误。

我已经尝试初始化我的自定义配置工厂,并使用该配置使用Configurator.initialize设置loggercontext,以及将配置文件设置为该配置,然后在此之后初始化log4j2但它仍然无法工作......

    customConfigurationFactory factory = new customConfigurationFactory(true, true, 5, 2, true);
    LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false);
    loggerContext = Configurator.initialize(factory.getConfiguration(loggerContext, ConfigurationSource.NULL_SOURCE)); 
    Configuration config;
    config = loggerContext.getConfiguration();

并且它仍然不接受配置工厂配置,即使我在上面的代码之后初始化记录器

当我调用上面的代码时它正在构建配置,因为我看到在控制台中构建它的消息,但是,即使它正在构建配置,log4j2也没有使用它,因为我收到此错误 -

[Fatal Error] log4j2.xml:1:1: Premature end of file.
ERROR StatusLogger Error parsing 

(当我收到此错误时,我留下了一个空白的xml文件,如果我完全删除xml文件,那么我没有配置错误)

我被告知必须将其识别为插件,并且可以使用此自定义配置工厂类代替xml文件,因此我在顶部添加了此声明 -

@Plugin(name = "CustomConfigurationFactory", category = ConfigurationFactory.CATEGORY)
@Order(50)

有没有人知道你如何使用这个自定义配置工厂插件类来初始化log4j2,就像你应该能够做到的那样?

0 个答案:

没有答案