簡體   English   中英

相對於jar目錄的Spring Boot日志文件未啟動目錄

[英]Spring Boot log file relative to jar directory not start directory

在我的Spring Boot配置文件中,可以指定相對於Spring Boot jar而不是相對於jar啟動目錄的日志文件位置嗎?

例:

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

目錄:

  • /app/dir/app.jar
  • /隨機/ DIR

開始:

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.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/

您必須提前知道jarfile的位置。 但是是的,區別在於絕對路徑和相對路徑之間

使用. 表示您要從打開控制台窗口的位置開始。 這是對於您在終端中的位置的路徑。

使用/表示您要從驅動器的根目錄開始。 現在,顯然您不想將文件存儲在驅動器的根目錄中。 但是,假設我將我的jar放在了/app/dir/app.jar文件夾中,那么配置就這么簡單:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM