Spring启动|以编程方式更改 slf4j 文件路径

Spring Boot | Change slf4j file path programmatically

我需要根据参数以编程方式设置 Spring 启动应用程序的文件路径。目前日志文件路径是通过 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) {
      ?....?
  }
}

您可以这样做,将 --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);