日志框架
目前市面上常見的日志框架有:slf4j(Simple Logging Facade for Java)、logback、log4j、log4j2、commons-logging(Spring默認(rèn)日志框架)、JUL(java.util.logging)等。
日志框架包括日志的抽象與日志的實(shí)現(xiàn)兩部分,其中日志的抽象推薦使用slf4j,而日志的實(shí)現(xiàn)推薦使用logback。Spring Boot的日志框架默認(rèn)選擇的就是這兩個(gè)。
SLF4J的使用
系統(tǒng)開發(fā)在使用日志的時(shí)候,不應(yīng)該使用日志的實(shí)現(xiàn),而應(yīng)該使用日志的抽象,但是日志的配置文件還是要使用日志實(shí)現(xiàn)框架本身的配置文件,日志使用示例代碼如下:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World!");
}
}
slf4j的調(diào)用結(jié)構(gòu)如下:
日志統(tǒng)一問題
當(dāng)一個(gè)項(xiàng)目集成了多個(gè)框架,而這些框架大部分都集成了日志框架,就會(huì)出現(xiàn)一個(gè)項(xiàng)目底層使用多種日志框架的問題,slf4j給出了這個(gè)問題的解決辦法,如下圖所示:
日志框架統(tǒng)一為slf4j的步驟:①排除其他框架集成的日志框架;②用中間包來替換原來的日志框架;③導(dǎo)入slf4j框架的其他實(shí)現(xiàn)。
Spring Boot的日志
Spring Boot Starter的maven依賴:
< dependency >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-starter< /artifactId >
< version >2.7.7< /version >
< scope >compile< /scope >
< /dependency >
Spring Boot底層的日志依賴關(guān)系圖:
Spring Boot使用的日志依賴:
< dependency >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-starter-logging< /artifactId >
< version >2.7.7< /version >
< scope >compile< /scope >
< /dependency >
由上圖可以看出,Spring Boot自動(dòng)適配了所有的日志,而且底層默認(rèn)使用了slf4j+logback記錄日志,引入其他框架的時(shí)候,只需要把這個(gè)框架依賴的日志框架移除即可。
Spring Boot默認(rèn)日志框架示例代碼如下:
package com.brevity;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class LoggingApplicationTests {
// 獲取日志記錄器,參數(shù)建議使用當(dāng)前類
Logger logger = LoggerFactory.getLogger(LoggingApplicationTests.class);
@Test
void logTest() {
// Spring Boot默認(rèn)使用的是info級(jí)別的日志
logger.trace("跟蹤日志");
logger.debug("debug日志");
logger.info("info日志");
logger.warn("warn日志");
logger.error("error日志");
}
}
修改默認(rèn)的日志級(jí)別只需要在配置文件中修改即可,例如在application.properties文件中添加如下代碼:
# 調(diào)整日志級(jí)別
logging.level.com.brevity=trace
# 修改控制臺(tái)輸出的日志格式
# %d表示日期時(shí)間,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度
# %logger{50} 表示logger名字最長50個(gè)字符,否則按照句號(hào)分割,%msg:日志消息,%n是換行符
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50
-
Boot
+關(guān)注
關(guān)注
0文章
153瀏覽量
36770
發(fā)布評(píng)論請先 登錄
Spring框架的設(shè)計(jì)理念
啟動(dòng)Spring Boot項(xiàng)目應(yīng)用的三種方法
Spring Boot嵌入式Web容器原理是什么
java 日志框架Spring Boot分析
Spring Boot框架錯(cuò)誤處理
spring mvc框架介紹

Spring Boot定時(shí)任務(wù)的重寫方法
Spring Boot從零入門1 詳述
Spring Boot特有的實(shí)踐
Spring Boot Web相關(guān)的基礎(chǔ)知識(shí)
Spring Boot Actuator快速入門
Spring Boot啟動(dòng) Eureka流程

Spring Boot的啟動(dòng)原理

Spring Cloud Gateway網(wǎng)關(guān)框架

評(píng)論