2017-02-08 6 views
2

Я хочу использовать 2 разных регистратора в классе, где один регистратор использует один файл конфигурации журнала, а другой использует другой файл конфигурации. например:Loglog несколько регистраторов с различной конфигурацией

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 конфигурационных файлов, как в приведенном выше примере».

ответ

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");