在開發過程中,日誌監聽成為非常重要的一部分。Spring Boot提供了強大的日誌模塊,其中最核心的就是日誌框架。Spring Boot默認使用Logback作為框架的實現,而SLF4J是Spring Boot與業務代碼之間的橋樑。當然,Spring Boot同時也支持其他的日誌框架,比如Log4j2、Log4j等。
一、Spring Boot Logger的配置
Spring Boot的日誌輸出級別,有五種級別,分別是:TRACE、DEBUG、INFO、WARN、ERROR。在Spring Boot的日誌配置中,可以指定全局配置或是針對某個Logger單獨指定。
logging.level.root=INFO
logging.level.com.example=DEBUG
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=ERROR
上述配置表示:全局日誌輸出級別為INFO,應用名稱為com.example的日誌輸出為DEBUG級別,包名為org.springframework.web下的日誌輸出為INFO級別,包名為org.hibernate下的日誌輸出為ERROR級別。
二、Spring Boot Logger的API
Logger API是SLF4J的一部分,它只是一組簡單的輸出方法,並不是直接輸出到日誌系統的。SLF4J 根據當前的日誌框架,提供了實現類介面。LoggerFactory是與具體日誌框架無關並且線程安全的類。你可以用下面的方式獲取Logger 對象。
private static final Logger logger = LoggerFactory.getLogger(XXX.class);
上述代碼表示獲取Logger對象時,XXX.class可以替換成任意一個你需要的類。如果你的應用有多個Logger對象,可以根據不同的功能需求進行命名。
三、Spring Boot Logger的使用
1、輸出debug日誌信息
logger.debug("debug日誌輸出");
當Logger的輸出級別高於等於DEBUG時,該方法才會被調用。在這個例子中,logger只會在DEBUG級別開啟時輸出信息。
2、輸出info日誌信息
logger.info("info日誌輸出");
當Logger的輸出級別高於等於INFO時,該方法才會被調用。在這個例子中,logger只會在INFO級別開啟時輸出信息。
3、輸出warn日誌信息
logger.warn("warn日誌輸出");
當Logger的輸出級別高於等於WARN時,該方法才會被調用。在這個例子中,logger只會在WARN級別開啟時輸出信息。
4、輸出error日誌信息
logger.error("error日誌輸出");
當Logger的輸出級別高於等於ERROR時,該方法才會被調用。在這個例子中,logger只會在ERROR級別開啟時輸出信息。
5、輸出參數化日誌信息
String name = "world";
logger.info("Hello, {}", name);
上述輸出結果為:Hello, world。當Logger的輸出級別高於等於INFO時,該方法才會被調用。在這個例子中,logger只會在INFO級別開啟時輸出信息。
四、Spring Boot Logger的附加功能
1、日誌文件輸出
Spring Boot允許你輸出到控制台或是文件中。下面是輸出到日誌文件中的配置方式:
logging.file=app.log
上述配置表示Spring Boot應用將日誌輸出到文件app.log。
2、控制台日誌顏色配置
在控制台輸出彩色日誌信息,可以設置以下參數:
spring.output.ansi.enabled=always
always:啟用控制台輸出色彩;never:禁用控制台輸出色彩;detect:根據情況啟用控制台輸出色彩。
3、日誌文件滾動配置
日誌文件滾動配置可以設置日誌文件的大小及時間等限制,可以按照時間或者按照大小來統計。下面是時間滾動的配置方式:
logging.file.max-history=30
logging.file.max-size=10MB
logging.file.total-size-cap=500MB
logging.file.clean-history-on-start=true
上述配置表示保留30天的日誌文件,單個日誌文件的大小為10MB,日誌文件總大小為500MB,程序啟動時會清除過期日誌文件。
4、添加自定義日誌
Spring Boot的日誌支持多種日誌框架,你可以按照以下方式添加自定義日誌框架:
@Configuration
public class MyLogConfig {
@Bean
public MyLog myLog(Logger logger) {
return new MyLog(logger);
}
}
上述代碼表示添加了一個自定義的日誌框架,MyLog使用了SLF4J的Logger介面,將Logger的實現注入到自定義的MyLog中。
總結
Spring Boot的Logger模塊提供了很好的日誌監聽和記錄功能,它是業務應用中不可或缺的一部分。通過對Spring Boot Logger的配置、API、使用以及附加功能的講解,我們相信大家已經對其有了更加深入的了解,可以在項目開發中使用它。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246545.html