【Azure 應用服務】App Service For Linux 部署Java Spring Boot應用後,檢視日誌檔案時的疑惑

路邊兩盞燈發表於2021-10-29

編寫Java Spring Boot應用,通過配置logging.path路徑把日誌輸出在指定的資料夾中。

第一步:通過VS Code建立一個空的Spring Boot專案

【Azure 應用服務】App Service For Linux 部署Java 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中執行並檢視輸出日誌 

【Azure 應用服務】App Service For Linux 部署Java Spring Boot應用後,檢視日誌檔案時的疑惑

(注:在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 可以提前建立好,也可以釋出時建立)

【Azure 應用服務】App Service For Linux 部署Java Spring Boot應用後,檢視日誌檔案時的疑惑

注:釋出時候,打包.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中後,如何檢視日誌呢?在程式根目錄下沒有發現任何日誌。那麼 日誌去那裡呢?

【Azure 應用服務】App Service For Linux 部署Java Spring Boot應用後,檢視日誌檔案時的疑惑

 

 

最後

雖然沒有能在LogFiles中發現Spring Boot專案中自定義的mylogs資料夾, 在多次修改日誌檔案路徑為Linux下的 logging.file.name=/home/LogFiles/MySpringlogtest.log 依舊沒有發現日誌檔案。

但是在App Service自動生成的 xxxx_default_docker.log 檔案和在Application問價夾中的 spring日誌中,發現了在程式碼中自定義輸出的日誌內容。

【Azure 應用服務】App Service For Linux 部署Java Spring Boot應用後,檢視日誌檔案時的疑惑 

雖然自定義的設定沒有生效,最終還是看見了需要的日誌檔案。就把這個疑問帶在心中,在未來中尋找答案。

 

示例程式碼,可在此處下載

 

參考資料

快速入門:在 Azure 應用服務中建立 Java 應用: https://docs.azure.cn/zh-cn/app-service/quickstart-java?tabs=javase&pivots=platform-linux

 

 

 

相關文章