項(xiàng)目為什么引入log4j而不是logback代碼
什么是slf4j
SLF4J,即簡(jiǎn)單日志門面(Simple Logging Facade for Java),不是具體的日志解決方案,它只服務(wù)于各種各樣的日志系統(tǒng)。按照官方的說(shuō)法,SLF4J是一個(gè)用于日志系統(tǒng)的簡(jiǎn)單Facade,允許最終用戶在部署其應(yīng)用時(shí)使用其所希望的日志System。
上面已經(jīng)介紹了slf4j,那么至于為什么使用它。Slf4j可以看成是接口,那么既然是接口,實(shí)現(xiàn)在哪里呢?實(shí)現(xiàn)就是基于你自己的系統(tǒng)需要引入什么日志。我這里使用了log4j作為slf4j的實(shí)現(xiàn)。那么就可以通過(guò)slf4j來(lái)輸出日志。
試想一下,如果你使用了第三方的類庫(kù),那么比如別人使用了java.util.logging.Logger這個(gè)類庫(kù)系統(tǒng),那么你的項(xiàng)目使用的是log4j日志系統(tǒng),你是不是要重新引入2種日志系統(tǒng)呢?那現(xiàn)在就有人為了解決這個(gè)問(wèn)題,就提供了slf4j這個(gè)日志接口類庫(kù)。你只要使用slf4j就可以了,至于你系統(tǒng)使用什么類庫(kù)作為我的實(shí)現(xiàn),我不管。那么這樣問(wèn)題就解決了,這也符合java的面向?qū)ο缶幊獭?/p>
代碼部分,由于sprintboot 默認(rèn)使用logback,如果想用log4j, 需要排除掉logback的jar,引入log4j 的jar
看看依賴
<dependencies> <!--slf4j和log4j日志交換包--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency> <!--log4j包--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--排除logback包 --> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
測(cè)試,生效的是log4j:
如果還原依賴:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
測(cè)試結(jié)果,看到用的是logback:
反正是就要引入這些包, 但是slf4j-api已經(jīng)在springboot-web里了。所以我的代碼中沒(méi)有再引入。
//slf4j包 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.8.0-beta2</version> </dependency> //slf4j和log4j日志交換包 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.8.0-beta2</version> </dependency> //log4j包 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version><dependency>
最后講一下用intellij看依賴:
在pom.xml 鼠標(biāo)右鍵
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java中?SLF4J和Logback和Log4j和Logging的區(qū)別與聯(lián)系
- slf4j與jul、log4j1、log4j2、logback的集成原理
- jdk-logging?log4j?logback日志系統(tǒng)實(shí)現(xiàn)機(jī)制原理介紹
- jcl與jul?log4j1?log4j2?logback日志系統(tǒng)機(jī)制及集成原理
- slf4j?jcl?jul?log4j1?log4j2?logback各組件系統(tǒng)日志切換
- Logback與Log4j2日志框架性能對(duì)比與調(diào)優(yōu)方式
- 淺談spring boot 集成 log4j 解決與logback沖突的問(wèn)題
- 如何將應(yīng)用的log4j替換成logback詳解
- 從log4j切換到logback后項(xiàng)目無(wú)法啟動(dòng)的問(wèn)題及解決方法
相關(guān)文章
java 將數(shù)據(jù)加載到內(nèi)存中的操作
這篇文章主要介紹了java 將數(shù)據(jù)加載到內(nèi)存中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09java實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng) 附源碼下載
這篇文章主要介紹了java實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng)(含源碼),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03java獲取當(dāng)前時(shí)間的四種方法代碼實(shí)例
這篇文章主要介紹了java獲取當(dāng)前時(shí)間的四種方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09聊聊RabbitMQ發(fā)布確認(rèn)高級(jí)問(wèn)題
這篇文章主要介紹了RabbitMQ發(fā)布確認(rèn)高級(jí)問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01Java+opencv3.2.0實(shí)現(xiàn)人臉檢測(cè)功能
這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0實(shí)現(xiàn)人臉檢測(cè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02