Java 更改主类中的Spring启动日志文件

Java 更改主类中的Spring启动日志文件,java,spring-boot,logback,Java,Spring Boot,Logback,在主类中,获取logging.file值并将传递的参数附加到该值。如果同一个springboot应用程序需要多次运行,我们将把some参数传递给该应用程序,并根据该参数创建新的日志文件。有人遇到过这个用例吗?启动Spring Boot应用程序时,只需指定logging.file。无需编码: $ java -Dlogging.file=file1.log -jar my-app.jar $ java -Dlogging.file=file2.log -jar my-app.jar $ java

在主类中,获取logging.file值并将传递的参数附加到该值。如果同一个springboot应用程序需要多次运行,我们将把some参数传递给该应用程序,并根据该参数创建新的日志文件。有人遇到过这个用例吗?

启动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);
}

Spring Boot允许您将配置外部化

文件参考:

在app.jar中,可以有一个application.properties文件 为“名称”提供合理的默认属性值。在新环境中运行时,可以使用特定的命令行开关启动,该开关将覆盖“name”
java-jarapp.jar--name=“Spring”

如果要覆盖
应用程序.properties
中的
logging.file
值,可以使用以下命令:

java-jarapp.jar--logging.file=thefileName

编辑

如果要附加到application.properties中的日志文件,可以执行以下操作

应用程序属性

instance.value=one
logging.file=C:/log/${instance.value}-spring.log
默认日志文件将是
one spring.log

当运行命令
java-jar app.jar--instance.value=two
时,它将用两个
two spring.log

替换/覆盖
${instance.value}
。你看过基于配置文件的属性了吗?试着编辑你的问题并使用一些代码示例,这样人们可以更好地了解yoi正在尝试的内容schieben@Rentius2407是的,我们可以有多个配置文件,例如DEV、UAT或PROD。但这不是我在这里要问的。我想将传递的参数附加到logging.file的值(从.properties或.yml)。很抱歉,我误解了您的问题。查看我发布的答案的编辑。确定这是最简单的方法。但我对参数还有其他依赖性,所以我想在编码中做到这一点。假设java-jar my-app.jar1,那么我的应用程序应该使用something-1.log进行日志记录。