當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot_日志-其他日志框架统一转换为slf4j
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot_日志-其他日志框架统一转换为slf4j
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前面說了slf44的使用原理,但是實際在開發的時候,我們可能場景更復雜一點,一些遺留問題我們來說一下,什么遺留問題呢,假設現在是A系統,我開發A系統的時候,我是使用slf4j+logback的方式,我是面向slf4j編程,里面的記錄都是使用slf4j,但是我在開發A系統的時候,我要依賴spring框架,我可能還要依賴hibernate框架,我可能還要依賴mybatis,可能一大堆,但是每一個框架,他在底層可能也用到了日志,而且還各不相同,比如我們Spring底層用的就是commons-logging,它是用它來做日志記錄的,而hibernate使用的是jboss-logging,他又用他來做日志記錄,等等等等我們就不說了,那么現在就出現了什么問題呢,我們系統里邊既有slf4j和logback,我用它來做日志記錄,而其他框架又用別的日志記錄,這個感覺就是一個日志雜種一樣,這也有那也有,那我們現在想要做一件事,就是統一日志記錄,即使別的框架,你最終也用到slf4j和logback,即使是別的框架,和我一起使用slf4j和logback,進行輸出,即使框架底層的一些日志,我要調配置文件,我就不用寫commons-logging配置,我就寫logback一個配置就行了,我們統一都讓他來用,那這個能不能做啊,我們也能做,我們看slf4j的首頁https://www.slf4j.org/有一個legacy APIs.https://www.slf4j.org/legacy.html在這也有一張圖
幫我們統一來使用slf4j,我們應用程序,以前要用slf4j+logback,我們先豎著看,我們應用程序面對slf4j編程,但是事情往往不那么美,我們應用程序可能依賴別的框架一大堆,而每一個框架又用不同的日志,有些框架用commons-logging,有些用log4j,有些用java util logging,而我把所有的框架統一都用slf4j,我們可以這么來做,我們把其他框架的所有這些日志,我用這些包來換,如果你的框架是commons-logging-api,你用這個jcl-over-slf4j,這個jar包,叫替換你這個commons-logging,替換的意思,也就是你要把對commons的依賴,排除掉,但是我們想想,如果我正在使用spring框架,我排除了commons-logging,我就單說spring,spring都運行不起來了,他都會報錯,commons-logging找不到,他在框架的底層,凡是記錄日志,都要用到commons這個類,那我就用新的jar包,新的jar包其實就是偷天換日包,貍貓換太子包,這個包的功能,其實就是說,跟commons-logging一樣,commons-logging里面有啥類,這里面也有什么,但是我們spring已經把commons-logging排除掉了,我引入了這個包,但是我們里面要使用commons-logging這個類,在這個包里面還是有的,然后我們spring框架就不會報錯了,調用的類在我新的包里面有,真正的實現怎么辦呢,它又調到slf4j,slf4j又調到真正的實現,我們相當中間又有一個適配層,可以把它叫做一個包裝層,Commons-logging用jcl,log4j去掉用log4j-over-slf4j,相當于把log4j轉成slf4j,你把原來的java utillogging,你給我去掉,然后用jul-to-slf4j,就是用這些東西,這些就是不同的日志框架,轉換成slf4j的轉換,再舉一個例子,我現在想要slf4j+log4j的組合,我日志接口,我選擇slf4j,我的實現我選擇log4j,還是按照我們以前的用法,我們先豎著來看,那就應該是我程序開發的時候,我面向slf4j編程,而slf4j最終是用log4j來做日志記錄,但是由于log4j還不知道slf4j,我們導了中間的一個適配層,如果我們是單線來使用,沒啥問題,但是我們往往在這個應用中,又有別的框架在使用別的日志,如果他在使用log4j,那就沒得說了,不用管,它使用的是commons-logging和java util logging,怎么辦呢,那就把別的框架的commons-logging,首先排除掉,然后用他替換,java util logging用他替換,我們是這種,如果我們相用slf4j加入java util logging的方式,那怎么辦,同樣我們豎著來看這一支,由于我們應用里面導入了其他的框架,我就把其他應用要用的日志包,我來排除掉,然后用jar包來替換一下,但是替換到底是怎么辦的,你一會可以看到源碼,所以我們想要其他日志,統一起來,就要這么來用
我們想要統一日志記錄也行,你給我這么做,如何讓系統所有的日志都統一到slf4j,很簡單,三步走,第一步先將系統中其他日志框架先排除出去,比如我導spring的時候,我讓他別導入commons-logging,但是我們如果只做排除,spring框架可能就運行不起來了,用中間包來替換原有的日志框架,中間包的作用就是用來替換,然后接下來第三步,我們再來使用slf4j其他的實現,我要用logback的,那你把其他的給轉換過來,如果我要用log4j的,那你就把其他的給轉換過來,springboot也是這么來做的
?
總結
以上是生活随笔為你收集整理的SpringBoot_日志-其他日志框架统一转换为slf4j的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot_日志-slf4j使
- 下一篇: SpringBoot_日志-Spring