spring boot 源碼解析(三)日志框架及集成使用

前兩章簡(jiǎn)單的說了下spring boot獨(dú)立成jar 的原理案怯。和spring boot的一些配置及為什么可以自動(dòng)配置的原理。而今天這篇又是一個(gè)獨(dú)立的知識(shí)點(diǎn):日志江场。
其實(shí)說起日志這個(gè)可以和Spring Boot關(guān)系不密集纺酸,哪怕我們不用Spring Boot也是要用日志的。
往小了說記錄項(xiàng)目的使用情況址否,往大了說出了問題得以調(diào)試餐蔬。這是一個(gè)必不可少的東西碎紊。所以這一章會(huì)詳細(xì)的講解一下日志及日志框架。

市場(chǎng)上常用的日志框架

JUL(java.util.logging),JCL(jackarta Commons Logging),Jboss-logging,Logback,Log4j,Log4j2,slf4j(Simple Logging Facade for Java)...
其中:JCL(jackarta Commons Logging),Jboss-logging,slf4j(Simple Logging Facade for Java)這三個(gè)是日志門面(日志的抽象層)樊诺。
JUL(java.util.logging),Logback,Log4j,Log4j2這四個(gè)是日志的實(shí)現(xiàn)仗考。
我們?cè)谑褂玫臅r(shí)候一般會(huì)選擇一個(gè)實(shí)現(xiàn),再選擇一個(gè)門面:
下面我們一一分析:

  • Jboss-logging:這個(gè)對(duì)我們普通程序員很不友好词爬,需要專門的框架秃嗜,所以暫時(shí)這個(gè)pass
  • JCL(jackarta Commons Logging):這個(gè)雖然沒啥大問題,可以使用顿膨。但是這個(gè)框架最后一次更新是2014年锅锨。×滴郑看這個(gè)時(shí)間只能說一句廉頗老矣/
  • slf4j(Simple Logging Facade for Java):所以三個(gè)門面只剩下這一個(gè)是適合使用的了必搞。而且有個(gè)小知識(shí):這個(gè)slf4j和logback,log4j這三個(gè)是一個(gè)人寫的囊咏。
  • Log4j:寫slf4j的那個(gè)人最開始的練手作品顾画,幾乎可以說是最開始的日志工具包。
  • Logback:寫log4j的大佬經(jīng)過一段時(shí)間的修煉匆笤,覺得log4j太垃圾了研侣,所以直接重新寫了一個(gè)。
  • JUL(java.util.logging):這個(gè)是jdk想要自己占領(lǐng)日志市場(chǎng)的跟風(fēng)之作炮捧。
  • Log4j2:就是借了個(gè)名庶诡,和log4j完全莫得關(guān)系,是阿帕奇公司開發(fā)的咆课。不管是性能還是完整性都挺好的末誓。但是因?yàn)樘昧耍院芏嗫蚣軟]適配书蚪。

分析了這么多喇澡,我們的選擇也出來了:slf4j和logback。
而我們用的框架:
Spring 框架默認(rèn)是用JCL殊校。
Spring Boot選用的是slf4j和logback晴玖。

Spring Boot中使用日志

在spring boot項(xiàng)目中,不需要導(dǎo)入額外的依賴包为流,直接就整合了slf4j了(其實(shí)spring boot中整合了好多日志框架)呕屎。

Spring boot中的自帶的日志框架

日志級(jí)別
日志本身是有級(jí)別之分的。根據(jù)日志的重要性敬察,分了五個(gè)級(jí)別秀睛,由低到高分別如下:
trace < debug < info < warn < error
我們可以調(diào)整輸出的日志級(jí)別,日志就只會(huì)在這個(gè)級(jí)別及以上更高級(jí)別的生效莲祸。如下demo:
!
默認(rèn)輸出info級(jí)別日志

正常來講這五個(gè)打印都應(yīng)該輸出蹂安,但是事實(shí)上并不是這樣椭迎,說明spring boot默認(rèn)的級(jí)別就是info.不過這個(gè)級(jí)別是可調(diào)的,如下配置:

logging.level.lsj=trace

這個(gè)配置需要注意下:level后面的是自己的包名田盈。這個(gè)配置的作用域是指定的包侠碧。
這個(gè)日志在控制臺(tái)其實(shí)看起來也不是很方便,所以日志是可以輸出到指定路徑的指定文件的缠黍。這里需要兩個(gè)配置:

logging.file=xxx.log #指定文件名弄兜,可以在這順便指定文件路徑
logging.path=/xx/xx #指定路徑。這個(gè)和上面的是沖突的瓷式。指定路徑后會(huì)自動(dòng)生成springboot默認(rèn)名稱的spring.log文件替饿。

需要注意的是上面的是spring 1.x版本的使用方法。而2.x以上這兩個(gè)配置改名字了贸典,變成了:

logging.file.name
logging.file.path

使用方法還是差不多的视卢,附上使用截圖:


日志輸出到文件截圖

其實(shí)這個(gè)還有一個(gè)好處,就是可以分天記錄日志廊驼,或者分周据过,分月都可以的。
當(dāng)然了妒挎,這個(gè)控制臺(tái)和日志文件的輸出格式也都是可以改的绳锅,在符合規(guī)定的情況下可以改成你想要的,如下兩個(gè)配置:

logging.pattern.console=
logging.pattern.file=
控制臺(tái)輸出格式改變了

日志文件輸出格式也改變了

至于這個(gè)輸出是有一定格式的酝掩,比如:

  • %d表示日期時(shí)間
  • %thread表示線程名稱
  • %logger{50}表示logger名字最長(zhǎng)50個(gè)字符鳞芙。否則分割
  • %msg日志消息
  • %n 換行符
    大概就這樣吧,估計(jì)這里沒說全期虾,感興趣的自己去看文檔原朝。
    這里還有個(gè)小知識(shí)點(diǎn):spring boot中的日志文件默認(rèn)會(huì)自動(dòng)分割,每到10m會(huì)往下版本遞增镶苞,比如spring1.log喳坠。到了10mb這個(gè)1就不動(dòng)了,新的寫道spring2.log茂蚓。再到10m自動(dòng)再往下
    另外壕鹉,logBack也支持自定義配置文件的。自己寫個(gè)logback的xml文件煌贴,放到spring boot的類目錄下御板,spring boot會(huì)自動(dòng)讀取這個(gè)配置文件而不是默認(rèn)的配置文件锥忿。(這里對(duì)xml文件名字是有要求的牛郑。)
    自己配置xml文件名稱要求

    敲黑板!這里又有注意點(diǎn)了:
    雖然我們這個(gè)圖中說明了可以起的名字有挺多的敬鬓,但是spring boot建議我們不要直接使用logback.xml而是使用logback-{prefile}.xml淹朋。之所以這樣的原因是如果我們使用logback.xml笙各。那么是日志框架直接讀取這個(gè)配置文件,繞過了spring boot础芍。但是如果是logback-{prefile}.xml杈抢。則會(huì)先由spring boot解析這個(gè)文件,而spring boot中那個(gè)很吊的注解springProfile:根據(jù)環(huán)境使用不同的配置就可以使用了仑性。當(dāng)然了惶楼,這個(gè)springProfile標(biāo)簽如果在logback.xml中出現(xiàn)會(huì)報(bào)錯(cuò)!

本篇文章就到這里诊杆,都是一些很基礎(chǔ)的知識(shí)和理論歼捐,可能看上去干貨不多,但是其實(shí)這個(gè)有助于你能看懂日志晨汹,并作出修改豹储。如果本篇文章稍微幫到你了記得點(diǎn)個(gè)喜歡點(diǎn)個(gè)關(guān)注。也祝大家工作順順利利吧淘这!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剥扣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子铝穷,更是在濱河造成了極大的恐慌钠怯,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曙聂,死亡現(xiàn)場(chǎng)離奇詭異呻疹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)筹陵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門刽锤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人朦佩,你說我怎么就攤上這事并思。” “怎么了语稠?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵宋彼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我仙畦,道長(zhǎng)输涕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任慨畸,我火速辦了婚禮莱坎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寸士。我一直安慰自己檐什,他們只是感情好碴卧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乃正,像睡著了一般住册。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓮具,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天荧飞,我揣著相機(jī)與錄音,去河邊找鬼名党。 笑死垢箕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兑巾。 我是一名探鬼主播条获,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蒋歌!你這毒婦竟也來了帅掘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤堂油,失蹤者是張志新(化名)和其女友劉穎修档,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體府框,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吱窝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迫靖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片院峡。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖系宜,靈堂內(nèi)的尸體忽然破棺而出照激,到底是詐尸還是另有隱情,我是刑警寧澤盹牧,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布俩垃,位于F島的核電站,受9級(jí)特大地震影響汰寓,放射性物質(zhì)發(fā)生泄漏口柳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一有滑、第九天 我趴在偏房一處隱蔽的房頂上張望跃闹。 院中可真熱鬧,春花似錦、人聲如沸辣卒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荣茫。三九已至,卻和暖如春场靴,著一層夾襖步出監(jiān)牢的瞬間啡莉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工旨剥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咧欣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓轨帜,卻偏偏與公主長(zhǎng)得像魄咕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚌父,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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