SpringBoot系列之日志框架介紹及其原理簡介

SpringBoot系列之日志框架介紹及其原理簡介

1求类、常用日志框架簡介

市面上常用日志框架:JUL奔垦、JCL、jboss-logging尸疆、logback椿猎、log4j、log4j2寿弱、slf4j鸵贬、etc.

其中日志門面,也是一系列接口api的有slf4j(Simple Logging Facade for Java)脖捻、JCL(Jakarta Commons Logging)阔逼、jboss-loggin

注意:常用的slf4j等只是一日志門面,是一個日志的抽象層地沮,非日志實現(xiàn)嗜浮,具體的實現(xiàn)用通過log4j或者logback等框架去實現(xiàn)

2、在項目中使用slf4j

日志調(diào)用的摩疑,還是建議引入slf4j對應的jar和其實現(xiàn)框架log4j或者logback危融,然后調(diào)用的還是如下進行調(diào)用,配好日志實現(xiàn)框架的配置雷袋,就可以進行日志跟蹤

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

slf官方手冊:slf4j官方手冊鏈接

如圖來自slf4j官方的圖吉殃,圖例已經(jīng)很好的介紹了slf4j的使用場景:

  • 如左一圖示,直接導slf4j API工程是不能實現(xiàn)日志打印的
  • logback的使用楷怒,需要導入slf4j API工程和其實現(xiàn)logback-classic.jar蛋勺、logback-core.jar
  • log4j的使用,同樣導入slf4j API工程鸠删,還要再加比較關(guān)鍵的適配層jar:slf4j-log412.jar抱完,然后log4j.jar才能適配slf4j
  • JTL(java util logging)也是通過適配層的slf4j-jdk14.jar先進行適配,然后jtl框架才能正常實現(xiàn)slf4j的api
  • etc.


    在這里插入圖片描述

3刃泡、系統(tǒng)日志統(tǒng)一到slf4j

ok巧娱,學到這里應該有個疑問?在Spring項目中烘贴,比如Spring framework框架禁添,Hibernate etc.,這些框架是否有自己的日志實現(xiàn)桨踪,很顯示老翘,基本每個框架都有自己的日志實現(xiàn),比如,spring framework就是使用commons-logging進行日志打印的酪捡,而Hibernate是通過(jboss-logging)的,etc.纳账,所以這么一堆日志框架堆在一個項目中逛薇,是否可以實現(xiàn)統(tǒng)一的日志打印疏虫?比如統(tǒng)一到實現(xiàn)slf4j門面

在slf4j官網(wǎng):http://www.slf4j.org/legacy.html永罚,這個頁面已經(jīng)提供了比較合理的兼容統(tǒng)一實現(xiàn)
如官網(wǎng)的圖例所示,主要提供引入一些橋接的jar卧秘,比如JCL框架可以引入jcl-over-slf4j.jar
log4j可以引入log4j-over-slf4j

官方說法:
為了簡化從JCL到SLF4J的遷移呢袱,SLF4J發(fā)行版包括jar文件jcl-over-slf4j.jar。該jar文件旨在替代JCL

注意問題:
jcl-slf4j.jar翅敌,這個jar需要注意了羞福,使用過程不要和jcl-over-slf4j一起用

jcl-over-slf4j.jar不應與slf4j-jcl.jar混淆
JCL-over-SLF4J(即jcl-over-slf4j.jar)在出于向后兼容性原因而需要支持JCL的情況下非常有用。它可以用于解決與JCL相關(guān)的問題蚯涮,而不必采用SLF4J API治专,該決定可以推遲到以后。
另一方面遭顶,在為組件采用SLF4J API 之后张峰,slf4j-jcl.jar很有用 ,該組件需要嵌入在正式要求JCL的更大的應用程序環(huán)境中棒旗。您的軟件組件仍可以使用SLF4J API喘批,而不會破壞大型應用程序。實際上铣揉,slf4j-jcl.jar會將所有日志記錄決策委派給JCL饶深,以便您的組件對SLF4J API的依賴關(guān)系對于更大的整體而言是透明的。
請注意逛拱,不能同時部署jcl-over-slf4j.jar和 slf4j-jcl.jar粥喜。前一個jar文件將使JCL將日志記錄系統(tǒng)的選擇委派給SLF4J,后一個jar文件將使SLF4J將日志記錄系統(tǒng)的選擇委派給JCL橘券,從而導致無限循環(huán)额湘。

ok,對于log4j-over-slf4j.jar使用過程同樣注意

log4j-over-slf4j.jar和slf4j-log4j12.jar不能同時存在
slf4j-log4j12.jar的存在(即SLF4J的log4j綁定)將強制將所有SLF4J調(diào)用委派給log4j旁舰。log4j-over-slf4j.jar的存在將把所有l(wèi)og4j API調(diào)用委派給它們的SLF4J等效項锋华。如果兩者同時存在,則slf4j調(diào)用將委派給log4j箭窜,而log4j調(diào)用將重定向到SLF4j毯焕,從而導致無限循環(huán)。

在這里插入圖片描述

對于這些竟然的jar是如何實現(xiàn)偷梁換柱的?我們可以點開對應的jar纳猫,如圖所示:這個jar的包名命名都和jcl的一樣婆咸,目的是實現(xiàn)偷梁換柱,強制不使用jcl的api芜辕,而實現(xiàn)slf4j


在這里插入圖片描述
在這里插入圖片描述

ok尚骄,可以歸納統(tǒng)一項目使用slf4j的過程,首先系統(tǒng)還是用排除其它日志實現(xiàn)jar侵续,然后引入橋接的jar倔丈,等覆蓋了之后,就可以加上對應的實現(xiàn)jar包状蜗,實現(xiàn)日志打印

4需五、Springboot日志場景啟動器

ok,有了前面的知識后轧坎,我們可以繼續(xù)學習Springboot的日志實現(xiàn)了宏邮,從前面的知識可以知道,slf4j只是一個日志門面工程缸血,并非實現(xiàn)蜀铲,在很多項目里都有日志框架混用的情況,針對此種起來属百,可以加入一些橋接的偷梁換柱jar记劝,然后再加上對應的實現(xiàn)jar就可以

然后Springboot其實也是類似這種實現(xiàn),首先族扰,Springboot默認使用slf4j作為門面工程厌丑,在實現(xiàn)過程也是有用這些偷梁換柱的橋接jar進行slf4j統(tǒng)一,然后再引用logback作為日志實現(xiàn)的jar渔呵,先快速創(chuàng)建一個Springboot項目:Springboot系列之快速創(chuàng)建項目教程

創(chuàng)建好項目之后怒竿,是默認會引入日志框架的,首先在pom文件扩氢,右鍵->maven->show dependencies顯示jar依賴圖

如圖所示耕驰,Springboot的場景啟動項目spring-boot-strater集成了spring-boot-strater-logging,spring-boot-strater-logging都是以logback為默認的日志實現(xiàn)框架录豺,當然本博客是以Springboot2.2.1.RELEASE版本為例子的


在這里插入圖片描述

當然每個版本的實現(xiàn)略有不同朦肘,不過基本都一致,給出尚硅谷老師給的圖片:


在這里插入圖片描述

ok双饥,Springboot項目已經(jīng)對日志做了一個比較好的兼容媒抠,還有一個日志jar沖突問題需要注意,因為Springboot項目是統(tǒng)一為slf4j門面的咏花,很顯然Springboot在項目實現(xiàn)中就已經(jīng)做了其它日志jar門面的排除趴生,比如spring項目就已經(jīng)將jcljar排除了,如圖:
在這里插入圖片描述

所以,在項目使用中苍匆,引入其它的jar刘急,都要考慮是否有對應的日志實現(xiàn)jar,要做必要的排除浸踩,以免造成jar沖突

ok叔汁,這篇博客是對常用日志框架的介紹,有了這些必要的知識之后民轴,就可以實踐一下了,詳情的可以參數(shù)我的博客球订,SpringBoot系列日志框架使用教程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末后裸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冒滩,更是在濱河造成了極大的恐慌微驶,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件开睡,死亡現(xiàn)場離奇詭異因苹,居然都是意外死亡,警方通過查閱死者的電腦和手機篇恒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門扶檐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胁艰,你說我怎么就攤上這事款筑。” “怎么了腾么?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵奈梳,是天一觀的道長。 經(jīng)常有香客問我解虱,道長攘须,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任殴泰,我火速辦了婚禮于宙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悍汛。我一直安慰自己限煞,他們只是感情好,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布员凝。 她就那樣靜靜地躺著署驻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旺上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天瓶蚂,我揣著相機與錄音,去河邊找鬼宣吱。 笑死窃这,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的征候。 我是一名探鬼主播杭攻,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疤坝!你這毒婦竟也來了兆解?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤跑揉,失蹤者是張志新(化名)和其女友劉穎锅睛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體历谍,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡现拒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了望侈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片印蔬。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脱衙,靈堂內(nèi)的尸體忽然破棺而出扛点,到底是詐尸還是另有隱情,我是刑警寧澤岂丘,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布陵究,位于F島的核電站,受9級特大地震影響奥帘,放射性物質(zhì)發(fā)生泄漏铜邮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一寨蹋、第九天 我趴在偏房一處隱蔽的房頂上張望松蒜。 院中可真熱鬧,春花似錦已旧、人聲如沸秸苗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惊楼。三九已至玖瘸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間檀咙,已是汗流浹背雅倒。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弧可,地道東北人蔑匣。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像棕诵,于是被迫代替她去往敵國和親裁良。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

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

  • 一校套、日志框架 市面上的日志框架有JUL价脾、JCL、Jboss-logging搔确、logback彼棍、Log4j灭忠、log4j...
    敗給小蘿莉閱讀 2,112評論 0 1
  • JAVA日志系統(tǒng)的演變史 我們先看一個故事膳算。項目經(jīng)理A帶著一幫兄弟開發(fā)了一套復雜的企業(yè)ERP系統(tǒng),這個系統(tǒng)一連開發(fā)...
    糖寶_閱讀 640評論 0 4
  • 在項目開發(fā)過程中弛作,我們可以通過 debug 查找問題涕蜂。而在線上環(huán)境我們查找問題只能通過打印日志的方式查找問題。因此...
    Java架構(gòu)閱讀 3,470評論 2 41
  • 我想了很多種開頭的方式映琳,例如放一張自己的自拍來博大家的眼球机隙。于是乎翻遍2/3的相冊,都沒有一張真實的照片萨西,大部分都...
    1115883fbf6f閱讀 160評論 0 1
  • 昨天女兒去學鋼琴有鹿,我很久沒見到她老師,想借此機會跟女兒一道去聽個課谎脯,跟老師見個面打個招呼葱跋,順便了解下女兒最近的學習...
    sunrainbowsea閱讀 150評論 0 0