我可以在Spring Boot配置文件中指定相对于Spring Boot jar而不是相对于jar启动目录的日志文件位置吗?
示例:
#application.yml
logging:
file: ./logs/app.log
目录:
开始:
cd /random/dir
java -jar /app/dir/app.jar
结果:
所需:
其他信息: 该jar将在不同的操作系统上运行。因此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
答案 0 :(得分:2)
一种简单的方法是将日志目录作为如下的系统属性传递。
#application.yml
logging:
file: ${LOGDIR}/logs/app.log
在运行应用程序时,您可以将LOGDIR系统属性指定为VM参数
cd /random/dir
java -jar /app/dir/app.jar -DLOGDIR=/app/dir/
答案 1 :(得分:0)
您必须提前知道jarfile的位置。但是是的,区别在于absolute, and relative paths之间。
使用.
表示您要从打开控制台窗口的位置开始。这是一条与您在终端中的位置相对相关的路径。
使用/表示您要从驱动器的根目录开始。现在,显然您不想将文件存储在驱动器的根目录中。但是,假设我把我的jar放在了文件夹中:/app/dir/app.jar
,那么配置就这么简单:
#application.yml
logging:
file: /app/dir/logs/app.log