SLF4J - Logback: Как настроить регистраторы во время выполнения? - PullRequest
26 голосов
/ 27 марта 2011

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

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

, так как я могу сделать что-то подобное?

С уважением,

Ответы [ 2 ]

19 голосов
/ 19 апреля 2011

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

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    
   }
}
1 голос
/ 10 апреля 2011

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

...