基礎
日誌系統有 日誌門面 和 日誌實現(類似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.properties
或application.yml
檔案進行設定。例如,可以設定日誌級別、日誌檔案路徑、日誌格式等。Spring Boot還支援透過XML配置檔案(如logback-spring.xml
)來進一步定製日誌輸出
配置項
日誌輸出格式:logging.pattern
日誌級別調整:logging.level
日誌檔案輸出:logging.file
日誌檔案歸檔:
Spring Boot預設使用的logback可以透過application.properties
或application.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";
}
}