Java 相对于jar目录的Spring启动日志文件不是启动目录
在Spring引导配置文件中,我是否可以指定相对于Spring引导jar的日志文件位置,而不是相对于启动jar的目录 例如:Java 相对于jar目录的Spring启动日志文件不是启动目录,java,spring,spring-boot,Java,Spring,Spring Boot,在Spring引导配置文件中,我是否可以指定相对于Spring引导jar的日志文件位置,而不是相对于启动jar的目录 例如: #application.yml logging: file: ./logs/app.log 目录: /app/dir/app.jar /随机/直接 开始: cd /random/dir java -jar /app/dir/app.jar cd /random/dir java -Dapp.log.dir=/app/dir/logs -jar /app/di
#application.yml
logging:
file: ./logs/app.log
目录:
- /app/dir/app.jar
- /随机/直接
cd /random/dir
java -jar /app/dir/app.jar
cd /random/dir
java -Dapp.log.dir=/app/dir/logs -jar /app/dir/app.jar
结果:
- /random/dir/logs/app.log
- /app/dir/logs/app.log
- /app/dir/app.jar
- C:\app\dir\app.jar
#application.yml
app:
log:
#Set a default directory in case a user "double clicks" the jar to launch it.
dir: ./logs
file: app.log
logging:
file: ${app.log.dir}/${app.log.file}
开始:
cd /random/dir
java -jar /app/dir/app.jar
cd /random/dir
java -Dapp.log.dir=/app/dir/logs -jar /app/dir/app.jar
您必须提前知道JAR文件的位置。但是,是的,两者之间的区别是不同的 使用
表示您希望从控制台窗口打开的位置开始。这是相对于您在终端中的位置的路径
使用/表示要从驱动器的根目录开始。现在,显然您不想将文件存储在驱动器的根目录中。但假设我把我的jar放在文件夹中:/app/dir/app.jar
,那么配置就很简单了:
#application.yml
logging:
file: /app/dir/logs/app.log
一种简单的方法是将日志目录作为系统属性传递,如下所示
#application.yml
logging:
file: ${LOGDIR}/logs/app.log
在运行应用程序时,可以将LOGDIR系统属性指定为VM参数
cd /random/dir
java -jar /app/dir/app.jar -DLOGDIR=/app/dir/
谢谢,我在我的原始帖子中添加了“添加信息”,以澄清jar将在不同的操作系统上以不同的路径运行。所以绝对路径不是一个选项。除非我可以在yaml/properties文件.java-DLOGDIR=/app/dir-jar/app/dir/app.jar中执行OS条件变量