使用不同配置记录多个记录器

时间:2017-02-08 05:21:32

标签: java logging logback

我想在一个类中使用2个不同的记录器,其中一个记录器使用一个logback配置文件而另一个使用另一个配置文件。例如:

class Sample {
    // LOGGER 1 follows configuration from logback1.xml
    private static final LOGGER1 = LoggerFactory.getLogger(Sample.class);

    // LOGGER 2 follows configuration from logback2.xml
    private static final LOGGER2 = LoggerFactory.getLogger(Sample.class);

    public myFunc(){
        LOGGER1.info("In myFunc"); // writes to file as configured in logback1.xml
        LOGGER2.info("Entered myFunc"); // writes to graylog server as configured in logback2.xml
    }
}

我想这样做的原因是我在运行时将第二个记录器注入代码中,并且我不希望注入的记录器与主项目中使用的记录器发生冲突。我应该怎么做呢?

我仔细阅读了这篇文章:How to use multiple configurations with logback in a single project?但它似乎解决了从许多人那里选择一个配置文件的问题,但是没有"能够同时使用2个配置文件,如上例所示。&# 34;

1 个答案:

答案 0 :(得分:1)

这是从不同配置中获取两个记录器的一种方法:

    LoggerContext c1 = new LoggerContext();
    LoggerContext c2 = new LoggerContext();
    new ContextInitializer(c1).configureByResource(new URL("file:logback1.xml"));
    new ContextInitializer(c2).configureByResource(new URL("file:logback2.xml"));
    Logger l1 = c1.getLogger("x");
    Logger l2 = c2.getLogger("x");