如何在运行时以编程方式添加Log4J2追加器?
问题内容:
是否可以使用XML配置中的规范以编程方式添加Log4J2附加程序?
我计划在log4j2.xml中定义所有内容,然后按情况选择追加器(不会编译):
if (arg[0].equals("log") ) {
Logger.getLogger("loggerNameFromXMLConfig").addAppender("appenderNameFromXMLConfig");
} else {
//...
}
问题答案:
编辑:有关log4j2的最新版本,请参阅下方答案
我给他们留下了不希望您这样做的印象,但这对我有用:
if (arg[0].equals("log") ) {
org.apache.logging.log4j.Logger logger
= org.apache.logging.log4j.LogManager.getLogger("loggerNameFromXMLConfig");
org.apache.logging.log4j.core.Logger coreLogger
= (org.apache.logging.log4j.core.Logger)logger;
org.apache.logging.log4j.core.LoggerContext context
= (org.apache.logging.log4j.core.LoggerContext)coreLogger.getContext();
org.apache.logging.log4j.core.config.BaseConfiguration configuration
= (org.apache.logging.log4j.core.config.BaseConfiguration)context.getConfiguration();
coreLogger.addAppender(configuration.getAppender("appenderNameFromXMLConfig"));
} else {
//...
}