Java日誌組件間關係

一、 總覽

本文章不對日誌組件進行優劣評價,只是對關係進行對比。在日誌中組件中存在這樣的幾種關係, 這幾種關係理解清楚, 有助於我們對日誌的引入和使用。

clipboard.png

二、 日誌門面

日誌門面就是指直接引入我們程序中進行記錄日誌的日誌組件,作爲日誌門面的這些組件會在程序中直接依賴, 上圖中就列舉的幾種常見的日誌門面的組件。像一些軟件直接回默認使用一些組件, 比如Spring使用的就是commons-logging, activiti使用的日誌門面就是slf4j, 其他的軟件也都會選用自己認爲好用的日誌門面。

三、 日誌實現

除了log4j既是門面又是實現之外, commons-logging和slf4j 都是能直接打印日誌的, 都需要依賴一個日誌實現來打印日誌,上圖中也舉了幾個日誌實現。

四、橋接方式

slf4j默認和logback做了一些橋接的處理,那麼橋接的作用是什麼呢, 假如我想使用slf4j做爲實現的門面,然而同時我想使用log4j作爲真正的日誌實現,這個時候就需要slf4j-logrj12 jar包, 現在應該可以理解橋接方式了。

五、 改變依賴

這裏的作用是爲了避免一些衝突, 例如在這樣的場景下,我們使用spring做爲開發,而我們開發的軟件要使用的是slf4j作爲日誌門面,這個時候因爲Spirng默認使用的是commons-logging作爲日誌門面,這個時候就會發生一些衝突, 所以我們可以引入jcl-over-slf4j, 通過這個組件把commons-logging覆蓋掉, 爲了把歷史軟件內部的依賴覆蓋掉, 就可通過這個方式改變依賴。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章