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

Настройка пути logback.xml программно

Я знаю, что могу установить путь logback.xml следующим образом:

Указание местоположения конфигурационного файла по умолчанию как системного свойства

Вы можете указать расположение файла конфигурации по умолчанию с системным свойством с именем "logback.configurationFile". Значением этого свойства может быть URL-адрес, ресурс в пути к классу или путь к файлу, внешнему по отношению к приложению.

java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1

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

4b9b3361

Ответ 1

Вы можете использовать:

System.setProperty("logback.configurationFile", "/path/to/config.xml");

Но это должно было произойти до загрузки лока, т.е. что-то вроде:

class Main {
  static { System.setProperty("logback.configurationFile", "/path/to/config.xml");}
  private final Logger LOG = LoggerFactory.getLogger(Main.class);

  public void main (String[] args) { ... }
}

Примечание. Я не тестировал его, но он должен работать.

Ответ 2

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
JoranConfigurator configurator = new JoranConfigurator();
InputStream configStream = FileUtils.openInputStream(logbackPropertiesUserFile);
configurator.setContext(loggerContext);
configurator.doConfigure(configStream); // loads logback file
configStream.close();

Ответ 4

Я просто хочу поделиться тем, что я сделал, в конце с помощью приложения Jersey- Spring:

MyWebApplicationInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(final ServletContext servletContext) throws ServletException {
        servletContext.addListener(new LogbackConfigListener());
        try { LogbackConfigurer.initLogging(servletContext.getRealPath("/WEB-INF/logback.xml")); }
        catch (FileNotFoundException | JoranException e) { e.printStackTrace(); }
    }
}

Мне также нужно добавить, что мне пришлось переместить

<dependency>
    <groupId>org.logback-extensions</groupId>
    <artifactId>logback-ext-spring</artifactId>
    <version>0.1.4</version>
    <scope>compile</scope></dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
    <scope>compile</scope></dependency>

из среды выполнения (родительский проект в моем случае) для компиляции.