Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 相对于jar目录的Spring启动日志文件不是启动目录_Java_Spring_Spring Boot - Fatal编程技术网

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

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

在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/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 -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条件变量