在我的 Spring Boot 配置文件中,我可以指定相对于 Spring Boot jar 的日志文件位置,而不是相对于 jar 启动的目录吗?
示例:
#application.yml
logging:
file: ./logs/app.log
目录:
- /app/dir/app.jar
- /随机/目录
开始:
cd /random/dir
java -jar /app/dir/app.jar
结果:
- /random/dir/logs/app.log
期望:
- /app/dir/logs/app.log
附加信息: 该 jar 将在不同的操作系统上运行。因此 jar 路径可能类似于:
- /app/dir/app.jar
- C:\app\dir\app.jar
在运行时,我可以计算出 jar/install 目录是什么。是否有 Java 解决方案允许我在启动后设置logging.file位置?或者记录器此时已经初始化了吗?
完整的解决方案:基于@satyesht
#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 -Dapp.log.dir=/app/dir/logs -jar /app/dir/app.jar
最佳答案
一种简单的方法是将日志目录作为系统属性传递,如下所示。
#application.yml
logging:
file: ${LOGDIR}/logs/app.log
在运行应用程序时,您可以将 LOGDIR 系统属性指定为 VM 参数
cd /random/dir
java -jar /app/dir/app.jar -DLOGDIR=/app/dir/
关于java - Spring Boot日志文件相对于jar目录而不是启动目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54910782/