編寫Java Spring Boot應用,通過配置logging.path路徑把日誌輸出在指定的資料夾中。
第一步:通過VS Code建立一個空的Spring Boot專案
第二步:在application.properties中新增輸入日誌的級別和指定路徑
logging.path=mylogs
logging.level.root= INFO
logging.level.org.springframework.web= INFO
logging.level.org.springframework.security= INFO
logging.level.org.hibernate= INFO
第三步:在程式碼中新增logging物件初始化程式碼,為了簡單,就在main方法中新增日誌
package com.example; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class App { private static final Logger logger = LoggerFactory.getLogger(App.class); public static void main(String[] args) { SpringApplication.run(App.class, args); logger.info("test java logs : info"); logger.error("test java logs : error"); logger.warn("test java logs : warn"); logger.trace("test java logs : trace" ); } }
第四步:VS Code中執行並檢視輸出日誌
(注:在Debug的前,出現了 Caused by: java.lang.ClassNotFoundException: javax.xml.bind.ValidationException 錯誤,原因是在缺少了 javax.xml.bind 依賴。在pom.xml中新增以下內容即可解決。
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency>
第五步:通過VS Code釋出Java應用到App Service For Linux中( App Service 可以提前建立好,也可以釋出時建立)
注:釋出時候,打包.JAR包時候,如果出現Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project logdemo: Fatal error compiling: java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags錯誤,是由於 lombok 的版本不匹配問題,如在示例中使用的為
<lombok.version>1.14.8</lombok.version>
需要修改為:
<lombok.version>1.18.22</lombok.version>
但是當以上程式碼釋出到App Service For Linux中後,如何檢視日誌呢?在程式根目錄下沒有發現任何日誌。那麼 日誌去那裡呢?
最後
雖然沒有能在LogFiles中發現Spring Boot專案中自定義的mylogs資料夾, 在多次修改日誌檔案路徑為Linux下的 logging.file.name=/home/LogFiles/MySpringlogtest.log 依舊沒有發現日誌檔案。
但是在App Service自動生成的 xxxx_default_docker.log 檔案和在Application問價夾中的 spring日誌中,發現了在程式碼中自定義輸出的日誌內容。
雖然自定義的設定沒有生效,最終還是看見了需要的日誌檔案。就把這個疑問帶在心中,在未來中尋找答案。
示例程式碼,可在此處下載。
參考資料
快速入門:在 Azure 應用服務中建立 Java 應用: https://docs.azure.cn/zh-cn/app-service/quickstart-java?tabs=javase&pivots=platform-linux