Java之常用日志框架

日志對(duì)于一個(gè)系統(tǒng)的重要性不言而喻荐绝,幾乎所有的系統(tǒng)都會(huì)使用日志低匙,本文簡(jiǎn)單介紹一下當(dāng)前流行的日志框架

1.日志體系

日志分層

日志體系大致如上圖所示旷痕,我們的系統(tǒng)會(huì)直接與接口層交互。當(dāng)然也可以直接使用具體的日志實(shí)現(xiàn)顽冶,比如logback欺抗,但是按照面向接口編程的理念,建議不要在系統(tǒng)中直接使用具體日志系統(tǒng)的代碼强重,否則后續(xù)若要更換日志系統(tǒng)绞呈,會(huì)相當(dāng)麻煩。

2.bridge層

先盜slf4j官網(wǎng)一張圖
concrete-bindings.png

其中Adaptation layer是bridge層间景。為什么需要bridge报强?其實(shí)slf4j(slf4j-api.jar)只提供了一個(gè)門面,并沒有具體的實(shí)現(xiàn)拱燃。像最左邊的那一列,如果我們的系統(tǒng)中只引入了slf4j-api.jar力惯,那么日志無法輸出碗誉。若想正常輸出日志,還需引入真正寫日志到文件的jar包父晶。

圖中深藍(lán)色的日志框架并不需要bridge層就可以使用slf4j進(jìn)行日志打印哮缺,原因在于這些日志框架都直接實(shí)現(xiàn)了slf4j。而log4j和jdk log并沒有實(shí)現(xiàn)slf4j(廢話甲喝,jdk的log怎么可能依賴于第三方的框架尝苇。。。)糠溜,因此需要一個(gè)中間層去轉(zhuǎn)化一下淳玩。

總結(jié)一下,充當(dāng)bridge層的jar包:slf4j-log412.jar 和 slf4j-jdk14.jar

3.其他框架轉(zhuǎn)接到slf4j

也是先盜圖一張
legacy.png

假設(shè)系統(tǒng)中使用了jcl作為了門面非竿,那么對(duì)jcl api的調(diào)用如何轉(zhuǎn)化為對(duì)slf4j api的調(diào)用蜕着?(常見的Spring框架的日志框架就是jcl)

slf4j提供了jar包將別的日志api的調(diào)用轉(zhuǎn)調(diào)到slf4j的api上。
jcl-over-slf4j.jar : jcl >>> slf4j
log4j-over-slf4j.jar : log4j >>> slf4j
jul-to-slf4j.jar : jdk api >>> slf4j
前兩個(gè)包需要分別替換commons-logging.jar和log4j.jar红柱。

在上述橋接承匣、轉(zhuǎn)換過程中,有一個(gè)限制就是轉(zhuǎn)調(diào)到slf4j的日志框架不能與當(dāng)前slf4j橋接的日志框架相同锤悄。舉個(gè)例子韧骗,系統(tǒng)使用slf4j和log4j打印日志,我們又引入了log4j-over-slf4j.jar去把log4j轉(zhuǎn)調(diào)到slf4j上零聚,這就會(huì)出現(xiàn)如下遞歸調(diào)用情況:
業(yè)務(wù)系統(tǒng) ---> slf4j api ---> log4j api --->轉(zhuǎn)調(diào)到 slf4j api ---> log4j api --->....

4.log4j2與slf4j

先區(qū)別幾個(gè)包
slf4j-log4j12.jar: slf4j提供的slf4j到log4j1.x的bridge袍暴;
log4j-over-slf4j.jar: slf4j提供的log4j轉(zhuǎn)調(diào)slf4j,一般是在業(yè)務(wù)系統(tǒng)直接調(diào)用了log4j的api握牧,但是想轉(zhuǎn)調(diào)到slf4j容诬,再通過別的日志框架進(jìn)行日志輸出的情況;
log4j-slf4j-impl.jar: log4j2提供的slf4j到log4j2.x的bridge沿腰;

5.總結(jié)

若業(yè)務(wù)系統(tǒng)中使用的是日志門面览徒,則參考concrete-bindings.png;
若業(yè)務(wù)系統(tǒng)沒有使用日志門面,但是想更換為別的具體日志系統(tǒng)颂龙,則參考legacy.png习蓬,先轉(zhuǎn)調(diào)到slf4j api,再通過別的日志系統(tǒng)輸出日志措嵌。


本文參考了
https://www.cnblogs.com/pekkle/p/6813458.html
https://www.slf4j.org/manual.html#swapping

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末躲叼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子企巢,更是在濱河造成了極大的恐慌枫慷,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浪规,死亡現(xiàn)場(chǎng)離奇詭異或听,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)笋婿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門誉裆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缸濒,你說我怎么就攤上這事足丢×荒澹” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵斩跌,是天一觀的道長(zhǎng)绍些。 經(jīng)常有香客問我,道長(zhǎng)滔驶,這世上最難降的妖魔是什么遇革? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮揭糕,結(jié)果婚禮上萝快,老公的妹妹穿的比我還像新娘。我一直安慰自己著角,他們只是感情好揪漩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吏口,像睡著了一般奄容。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上产徊,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天昂勒,我揣著相機(jī)與錄音,去河邊找鬼舟铜。 笑死戈盈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谆刨。 我是一名探鬼主播塘娶,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼痊夭!你這毒婦竟也來了刁岸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤她我,失蹤者是張志新(化名)和其女友劉穎虹曙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體番舆,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡根吁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了合蔽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡介返,死狀恐怖拴事,靈堂內(nèi)的尸體忽然破棺而出沃斤,到底是詐尸還是另有隱情,我是刑警寧澤刃宵,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布衡瓶,位于F島的核電站,受9級(jí)特大地震影響牲证,放射性物質(zhì)發(fā)生泄漏哮针。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一坦袍、第九天 我趴在偏房一處隱蔽的房頂上張望十厢。 院中可真熱鬧,春花似錦捂齐、人聲如沸蛮放。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽包颁。三九已至,卻和暖如春压真,著一層夾襖步出監(jiān)牢的瞬間娩嚼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工滴肿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岳悟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓嘴高,卻偏偏與公主長(zhǎng)得像竿音,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拴驮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容