日志框架
目前市面上常見(jiàn)的日志框架有: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)開(kāi)發(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)一問(wèn)題
當(dāng)一個(gè)項(xiàng)目集成了多個(gè)框架,而這些框架大部分都集成了日志框架,就會(huì)出現(xiàn)一個(gè)項(xiàng)目底層使用多種日志框架的問(wèn)題,slf4j給出了這個(gè)問(wèn)題的解決辦法,如下圖所示:
日志框架統(tǒng)一為slf4j的步驟:①排除其他框架集成的日志框架;②用中間包來(lái)替換原來(lái)的日志框架;③導(dǎo)入slf4j框架的其他實(shí)現(xiàn)。
Spring Boot的日志
Spring Boot Starter的maven依賴(lài):
< dependency >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-starter< /artifactId >
< version >2.7.7< /version >
< scope >compile< /scope >
< /dependency >
Spring Boot底層的日志依賴(lài)關(guān)系圖:
Spring Boot使用的日志依賴(lài):
< 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è)框架依賴(lài)的日志框架移除即可。
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)前類(lèi)
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名字最長(zhǎng)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文章
149瀏覽量
35839
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論