Подтвердить что ты не робот

SLF4J - Logback: как настроить регистраторы во время выполнения?

мы используем LogBack с нашим проектом, я хочу настроить регистратор в соответствии с некоторыми значениями базы данных, т.е. если для некоторого значения DB установлено значение true, то регистратор должен использовать как файлы, так и DB-приставки, если он неверен, поэтому регистратор должен использовать только DB appender,

Я также хочу сохранить использование статических конечных логгеров, поэтому я не буду создавать новый экземпляр каждый раз, когда вызывается журнал,

так как я могу сделать что-то вроде этого?

Привет,

4b9b3361

Ответ 1

Вы должны настроить программный журнал, как описано в в этом примере.

public class Main {

   public static void main(String[] args) {
     Logger logger = (Logger) LoggerFactory.getLogger("abc.xyz");

     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
     FileAppender<LoggingEvent> fileAppender =
                       (FileAppender<LoggingEvent>) logger.getAppender("file");
     if(fileAppender != null) {
       fileAppender.stop();
       fileAppender.setFile("new.log");
       PatternLayout pl = new PatternLayout();
       pl.setPattern("%d %5p %t [%c:%L] %m%n)");
       pl.setContext(lc);
       pl.start();
       fileAppender.setLayout(pl);
       fileAppender.setContext(lc);
       fileAppender.start();
     }
     ... etc    
   }
}

Ответ 2

Есть ли определенная причина для чтения свойства конфигурации из базы данных? Одно из предложений заключалось бы в использовании JNDI. Запуск журнала может считывать настроенные значения JNDI с помощью тега.