我想在一个类中使用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;
答案 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");