Весенний ботинок | Изменить путь к файлу slf4j программно - PullRequest
1 голос
/ 31 марта 2020

Мне нужно программно установить путь к файлу приложения Spring Boot на основе параметра. В настоящее время путь к файлу журнала задается с помощью свойства Spring Boot logging.file. Мне нужно программно переопределить это свойство. Другие свойства журнала из application.properties должны остаться неизменными.

Фасад ведения журнала - SLF4J, а структура ведения журнала - logback.

На данный момент я обнаружил, что мне нужно добавить ApplicationContextInitializer к моему SpringApplication.

Вопрос в том, как изменить путь к файлу журнала в этом LoggingInitializer?

public static void main(String[] args) {
    SpringApplication application = new SpringApplication(Main.class);
    application.addInitializers(new LoggingInitializer());
    application.run(args);
}

public class LoggingInitializer implements ApplicationContextInitializer {
  @Override
  public void initialize(ConfigurableApplicationContext applicationContext) {
      ?....?
  }
}

1 Ответ

1 голос
/ 01 апреля 2020

Вы можете сделать это, передав в приложение параметр командной строки --logging.file.path = new-path-to-logs. Просто покажите вам картину, где вы должны измениться;

String[] nArgs = Arrays.copyOf(args, args.length + 1);
nArgs[args.length] = "--logging.file.path=./logs2/";

SpringApplication.run(Main.class, nArgs);
...