Выход из системы: загрузка заводного конфига

Как я могу программно загрузить нестандартный конфиг с именем groovy (logback-config.groovy) конфиг?
Когда я пытаюсь:

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(loggerContext);
configurator.doConfigure(this.getClass().getResource("/logback-config.groovy"));

Получил опыт:

ch.qos.logback.core.joran.spi.JoranException: проблема с анализом XML-документа. Смотрите ранее сообщенные ошибки.

В чем дело?

1 ответ

Решение

Проблема здесь в том, что JoranConfigurator специфично только для конфигураций XML; для конфигурационных файлов Groovy, logback использует другой класс GafferConfigurator, (К сожалению, документация о выходе из системы не дает должной рекламы этому факту.) Но вместо того, чтобы ссылаться на GafferConfigurator напрямую, было бы лучше использовать ContextInitializer класс вместо:

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
new ContextInitializer(loggerContext).configureByResource(this.getClass().getResource("/logback-config.groovy"));

Это позволяет одновременно обрабатывать типы файлов XML и Groovy, а также использовать некоторые из встроенных средств проверки ошибок в logback.

Другие вопросы по тегам