【Azure 應用服務】App Service For Linux 部署Java Spring Boot應用後,查看日誌文件時的疑惑

編寫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 應用: //docs.azure.cn/zh-cn/app-service/quickstart-java?tabs=javase&pivots=platform-linux