gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:54:36 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com