您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關項目引入log4j而不是logback代碼的原因,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
什么是slf4j
SLF4J,即簡單日志門面(Simple Logging Facade for Java),不是具體的日志解決方案,它只服務于各種各樣的日志系統。按照官方的說法,SLF4J是一個用于日志系統的簡單Facade,允許最終用戶在部署其應用時使用其所希望的日志System。
為什么使用slf4j
上面已經介紹了slf4j,那么至于為什么使用它。Slf4j可以看成是接口,那么既然是接口,實現在哪里呢?實現就是基于你自己的系統需要引入什么日志。我這里使用了log4j作為slf4j的實現。那么就可以通過slf4j來輸出日志。
slf4j的解耦
試想一下,如果你使用了第三方的類庫,那么比如別人使用了java.util.logging.Logger這個類庫系統,那么你的項目使用的是log4j日志系統,你是不是要重新引入2種日志系統呢?那現在就有人為了解決這個問題,就提供了slf4j這個日志接口類庫。你只要使用slf4j就可以了,至于你系統使用什么類庫作為我的實現,我不管。那么這樣問題就解決了,這也符合java的面向對象編程。
代碼部分,由于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>
測試結果,看到用的是logback:
反正是就要引入這些包, 但是slf4j-api已經在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 鼠標右鍵
以上就是項目引入log4j而不是logback代碼的原因,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。