在主类中获取logging.file值,并将传递的参数附加到该值。如果相同的Spring Boot应用程序需要运行多次,我们将传递一些参数给该应用程序,并基于该参数将创建新的日志文件。有人遇到过这个用例吗?
答案 0 :(得分:1)
在启动Spring Boot应用程序时只需指定logging.file
。无需编码:
$ java -Dlogging.file=file1.log -jar my-app.jar
$ java -Dlogging.file=file2.log -jar my-app.jar
$ java -Dlogging.file=file3.log -jar my-app.jar
如果您真的想用代码来完成,可以在启动Spring Boot之前在main()
中完成:
public static void main(String[] args) {
System.setProperty("logging.file", "file1.log");
SpringApplication.run(MyApplication.class, args);
}
答案 1 :(得分:0)
Spring Boot使您可以外部化配置。
文档参考:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
在您的app.jar中,您可以拥有一个application.properties文件,该文件 为“名称”提供合理的默认属性值。在新环境中运行时,可以使用特定的命令行开关启动,该命令行开关将覆盖“名称”。
java -jar app.jar --name="Spring"
如果要覆盖logging.file
中的application.properties
值,可以使用以下命令:
java -jar app.jar --logging.file=thefileName
修改:
如果要附加到application.properties中的日志文件,可以执行以下操作。
application.properties
instance.value=one
logging.file=C:/log/${instance.value}-spring.log
默认日志文件为one-spring.log
。
运行命令java -jar app.jar --instance.value=two
时,它将用两个${instance.value}
two-spring.log