如何获取所有apenders形成log4j2根记录器

时间:2015-05-25 04:25:37

标签: java logging log4j append log4j2

在log4j 1.2中,我们可以通过以下方式获取root logger的所有appender。

Enumeration<Appender> it = Logger.getRootLogger().getAllAppenders();

在log4j2中是否有类似的东西来获取根记录器及其附加程序?

2 个答案:

答案 0 :(得分:1)

你可以从LoggerConfig

获取所有appender
    org.apache.logging.log4j.core.LoggerContext logContext = (org.apache.logging.log4j.core.LoggerContext) LogManager
            .getContext(false);

    Map<String, LoggerConfig> map = logContext.getConfiguration().getLoggers();

    for(LoggerConfig c:map.values()){
        System.out.println(c.getAppenders());
    }

答案 1 :(得分:0)

AFAIK,你需要这样的东西(也许有些东西不那么复杂......): 取自

  

org.apache.logging.log4j.core.jmx.Server:

LoggerContextFactory factory = LogManager.getFactory();
ContextSelector selector = ((Log4jContextFactory) factory).getSelector();
for (LoggerContext ctx : selector.getLoggerContexts()) {
    ...
    Map<String, Appender> m = ctx.getConfiguration().getAppenders();
    ...
}