Я знаю, что существует операция jmx reloadDefaultConfiguration(), но без получения экземпляра MBean и вызова этой операции существует ли API-интерфейс Logback для перезагрузки конфигурации по умолчанию (при необходимости с указанием пути к файлу конфигурации журнала)?
Как мне программно указать Logback для перезагрузки конфигурации
Ответы (2)
Это исходный код JMXConfigurator.reloadDefaultConfiguration()
:
public void reloadDefaultConfiguration() throws JoranException {
ContextInitializer ci = new ContextInitializer(loggerContext);
URL url = ci.findURLOfDefaultConfigurationFile(true);
loggerContext.reset();
ci.configureByResource(url);
}
А как насчет того, чтобы просто запускать этот код везде, где он вам нужен?
Единственная проблема - это переменная loggerContext
. Вы можете получить его, используя:
(LoggerContext)LoggerFactory.getILoggerFactory()
К сожалению, похоже, что для этого нет хорошо продуманного API. Как насчет поднятия проблемы? Также знаете ли вы, что Logback имеет встроенную функцию автоматического обновления?
person
Tomasz Nurkiewicz
schedule
16.02.2012
Да, думал об использовании функции автоматического обновления, но кажется немного пугающим, чтобы включить ее на чем-либо, кроме моей среды разработки.
- person Yony; 18.02.2012
Для этой цели я использовал следующий код:
public static void reloadLogger() {
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
ContextInitializer ci = new ContextInitializer(loggerContext);
URL url = ci.findURLOfDefaultConfigurationFile(true);
try {
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(loggerContext);
loggerContext.reset();
configurator.doConfigure(url);
} catch (JoranException je) {
// StatusPrinter will handle this
}
StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
}
person
sasha_trn
schedule
16.01.2013
Это не обрабатывает настройку журнала с использованием файла .groovy ... выдает
org.xml.sax.SAXParseException
- person JohnTheBeloved; 12.09.2016
Крутая проблема раздражает. Я пытаюсь перезапустить свою систему во время работы и хочу перезагрузить файл groovy, так как он помещает файлы журнала в каталог с отметкой времени.
- person Troy Daniels; 15.01.2020