Spring Boot日誌的使用和配置

尼丝發表於2024-11-30

基礎

日誌系統有 日誌門面 和 日誌實現(類似JDBC和MySQL的關係)
日誌門面用於統一介面,可以切換不同的日誌實現

Spring Boot中的日誌

Spring Boot預設使用SLF4j作為日誌門面,Logback作為日誌實現框架,但同時也支援Java Util Logging、Log4J2等其他日誌實現。

透過預設引入spring-boot-starter-logging依賴,Spring Boot會自動配置這些日誌框架,並將其整合到專案中。

當Spring Boot啟動時,會建立一個SpringApplication例項,並透過LoggingApplicationListener監聽器來初始化日誌系統。這個監聽器會在Spring Boot啟動過程中響應不同的事件(如ApplicationStartingEvent),並根據這些事件載入和配置日誌框架。

日誌配置

日誌配置可以透過application.propertiesapplication.yml檔案進行設定。例如,可以設定日誌級別、日誌檔案路徑、日誌格式等。Spring Boot還支援透過XML配置檔案(如logback-spring.xml)來進一步定製日誌輸出

配置項

日誌輸出格式:logging.pattern
日誌級別調整:logging.level
日誌檔案輸出:logging.file

日誌檔案歸檔:
Spring Boot預設使用的logback可以透過application.propertiesapplication.yml檔案進行設定。log4j2等需要自行建立xml配置檔案。
日誌歸檔配置:logging.logback.rollingpolicy

日誌使用

經典方式使用LoggerFactory:

import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
public class TestController {  
    Logger logger = LoggerFactory.getLogger(TestController.class);  
  
    @GetMapping("/test")  
    public String test() {  
        logger.info("test");  
        return "test";  
    }  
}

使用lombok註解@Slf4j

import lombok.extern.slf4j.Slf4j;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
@Slf4j  
@RestController  
public class TestController {  
  
    @GetMapping("/test")  
    public String test() {  
        log.info("test");  
        return "test";  
    }  
}

相關文章