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);
我需要根据参数以编程方式设置 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);