我几乎完全遵循了这里的说明 -
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,就像你应该能够做到的那样?