相对于 jar 目录的 Spring Boot 日志文件不是启动目录

在我的 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


慕勒3428872
浏览 132回答 2
2回答

噜噜哒

一种简单的方法是将日志目录作为系统属性传递,如下所示。#application.ymllogging:  file: ${LOGDIR}/logs/app.log在运行您的应用程序时,您可以将 LOGDIR 系统属性指定为 VM 参数cd /random/dirjava -jar /app/dir/app.jar -DLOGDIR=/app/dir/

扬帆大鱼

您必须提前知道 jarfile 的位置。但是,是的,区别在于绝对路径和相对路径。Using.表示您要从我们的控制台窗口打开的位置开始。这是相对于您在终端中的位置的路径。使用 / 表示您要从驱动器的根目录开始。现在,显然您不想将文件存储在驱动器的根目录中。但是假设我在文件夹中有我的 jar:/app/dir/app.jar那么配置就像说一样简单:#application.ymllogging:  file: /app/dir/logs/app.log
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java