当前位置: 首页 > 知识库问答 >
问题:

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

乐正穆冉
2023-03-14

在我的Spring Boot配置文件中,我是否可以指定相对于Spring Boot jar的日志文件位置,而不是相对于启动jar的目录?

#application.yml
logging:
  file: ./logs/app.log
    null

开始:

cd /random/dir
java -jar /app/dir/app.jar

结果:

  • /random/dir/logs/app.log

期望:

  • /app/dir/logs/app.log

附加信息:jar将运行在不同的操作系统上。因此jar路径可能类似于:

    null

完整解决方案:基于@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

共有1个答案

陈富
2023-03-14

一种简单的方法是将日志目录作为系统属性传递,如下所示。

#application.yml
logging:
  file: ${LOGDIR}/logs/app.log

在运行应用程序时,可以将LOGDIR系统属性指定为VM参数

cd /random/dir
java -jar /app/dir/app.jar -DLOGDIR=/app/dir/
 类似资料:
  • 我的程序从不是项目根目录的位置读入文档。文档包含一个相对路径。当程序应用该路径时,它确实从项目的根目录开始。如何使其应用来自文档原始位置的路径? 以下是细节。有点长,但很简单。 我在Eclipse中有一个Java项目,位于 该程序运行一个XSL转换,该转换以Schematron模式作为输入,并产生一个新的XSLT样式表作为输出 它包含这一行,还有几条类似的: 如果从模式的位置开始,并应用该相对路径

  • 问题内容: 我可以使用SWT 选择文件夹而不是文件吗? 问题答案: 您可以使用代替。这是一些示例代码: 这是一个稍大的示例。

  • 刚开始学习Apache Flume。我遵循Flume官方入门网站上的说明: https://cwiki.apache.org/confluence/display/FLUME/Getting开始 按照上面链接上的说明操作后,几乎一切都很好。但是后来我找不到任何日志文件。我想日志文件在{flume.directory}/logs下。有办法找到水槽日志文件吗? 这是我的log4j.properties

  • 我经常使用标志遍历多个子目录,并提取特定文件或文件类型,而不必单独明确引用每个文件。例子: 这会在我的目标路径中创建与最初检索DLL的源完全相同的目录结构。例如,如果我从上面的检索了一个DLL,那么它会将该DLL放在路径中。 这种行为可以通过以下方式进行修改: 但显然,这意味着我必须单独引用依赖关系中的每个子目录。 因此,64000美元的问题是,如何防止在目标中重新创建相同的目录,而不必显式引用源

  • 我正在开发一个将在OSX和windows上运行的应用程序。我希望将日志写入用户主目录。对于OSX,它将位于/Users//Library/Application Support/MyApp/log目录下,并位于windows下,具体取决于/Users//AppData/MyApp/log目录下的版本。 我能做到这一点的最好方法是什么?我已经四处寻找解决方案,但没有找到任何有用的或我喜欢使用的解决方

  • 我写了一个pom.xml来编译目录"D:\Windchill_Market\ERP Connector\SourceCode\Build\src1\src\main\java\com\sample"中的java文件。 现在,我必须 jar 目录中的所有文件“D:\Windchill_Market\ERP 连接器\源代码\Build\src1”。 在我的pom.xml中: 我可以生成类文件。但我无法