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