編寫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