Log的用法

(Notice:以下所有經(jīng)驗(yàn)也是我根據(jù)網(wǎng)上的經(jīng)驗(yàn)整理的瑰艘,如有侵權(quán)可以聯(lián)系我刪除,歡迎交流和溝通肤舞,Wx:IT_Ezra紫新,QQ 654303408。 有問(wèn)題討論也可聯(lián)系我李剖。)

(PS:Log(日志)對(duì)于程序員來(lái)說(shuō)芒率,是一個(gè)非常非常重要的工具,無(wú)論是對(duì)于開(kāi)發(fā)杖爽,對(duì)于運(yùn)維敲董,對(duì)于測(cè)試來(lái)說(shuō)紫皇,都是非常重要的信息慰安,下面我們來(lái)介紹一下日志。)

在我剛開(kāi)始學(xué)習(xí)編程的時(shí)候聪铺,我的導(dǎo)生告訴我化焕,作為程序員,必須要會(huì)單步調(diào)試铃剔,會(huì)打斷電撒桨,會(huì)看控制臺(tái)。其實(shí)這種說(shuō)法轉(zhuǎn)換到現(xiàn)在來(lái)說(shuō)就是:會(huì)打log键兜,會(huì)看日志文檔凤类。
對(duì)于現(xiàn)在成熟的框架項(xiàng)目,日志已經(jīng)成為了基本普气,作為運(yùn)營(yíng)谜疤,第一基本功就是要會(huì)看日志文檔,而作為變成的時(shí)候现诀,我們經(jīng)常會(huì)在代碼中打log夷磕,來(lái)進(jìn)行過(guò)程判斷,然后再根據(jù)日志文檔進(jìn)行排查bug和解決bug仔沿。常見(jiàn)的封裝好的logger包目前有l(wèi)og4j坐桩,slf4j,而slf4j實(shí)際上是根據(jù)某些功能對(duì)log4j進(jìn)行了一定的封裝封锉。
對(duì)于日志绵跷,我們首先要了解一個(gè)概念就是膘螟,日志級(jí)別,日志是分級(jí)別的碾局,從低到高分別是萍鲸。logger.debug,logger.info,logger.warn,logger.error,logger.fatal。其中低級(jí)別的會(huì)輸出高級(jí)別的信息擦俐,高級(jí)別的不會(huì)輸出低級(jí)別的脊阴,什么意思呢?就是在配置日志的時(shí)候蚯瞧,會(huì)有一個(gè)配置文件嘿期,來(lái)選擇我對(duì)這個(gè)系統(tǒng)的日志級(jí)別進(jìn)行選擇,如果我選擇debug級(jí)別的埋合。那么备徐,fatal,error,warn,info,debug。這些日志都會(huì)被展示出來(lái)甚颂。而如果我選擇fatal級(jí)別的蜜猾。那么日志文件里面只會(huì)有fatal的日志。你對(duì)于logger.error等等都不會(huì)輸出振诬。

這樣會(huì)導(dǎo)致什么問(wèn)題呢蹭睡?

如果錯(cuò)誤的選擇日志級(jí)別,可能會(huì)導(dǎo)致吞異常8厦础<缁怼!這個(gè)就很嚴(yán)重了辫呻,你的程序出現(xiàn)了異常清钥,但是你卻通過(guò)日志文檔看不到異常在哪里。因?yàn)槟氵x擇了高級(jí)別的日志級(jí)別放闺。所以祟昭,低等級(jí)的日志就被吞掉了。但是講道理來(lái)說(shuō)怖侦,一般不會(huì)出現(xiàn)這種情況篡悟。因?yàn)槲覀兊娜罩炯?jí)別通常會(huì)選擇info,或者error础钠,而我們的異常一般會(huì)通過(guò)error來(lái)輸出恰力。所以,針對(duì)不同的情況旗吁,選擇不同的日志輸出方式也很簡(jiǎn)單踩萎。

哪些輸出方式呢?很钓?

上文也介紹了香府。有五種董栽,我們通常使用的,debug企孩,info锭碳,error。在調(diào)試狀態(tài)下的時(shí)候使用debug勿璃,(但是這個(gè)也不是硬性規(guī)定)擒抛,如果想輸出某一個(gè)內(nèi)容來(lái)進(jìn)行判斷,我們通常用到info补疑,也就是information的簡(jiǎn)寫(xiě)歧沪。然后就是error,通常用error來(lái)輸出異常莲组。

log4j和slf4j有一個(gè)很大的區(qū)別就是:方法的用法诊胞。

什么意思呢?log4j的日志方法通常類似這樣:
            logger.info("-------------------用戶昵稱" + senseAgroMember.getMemberNickname() + "--------------");

slf4j的日志方法通常是這樣
            logger.info("-------------------用戶昵稱={}" 锹杈,senseAgroMember.getMemberNickname() + "--------------");

有什么區(qū)別撵孤,如果用“,”竭望,是使用{}占位符邪码。避免字符串連接操作,減少String對(duì)象(不可變)帶來(lái)的內(nèi)存開(kāi)銷市框。我們知道String在java里面是 final static的霞扬。所以用“+”糕韧,會(huì)重新開(kāi)辟空間枫振,然后生成新的String對(duì)象,浪費(fèi)空間萤彩。

日志的分類

這里就是一個(gè)很重要的知識(shí)點(diǎn)粪滤。就是分開(kāi)打印。為什么需要分開(kāi)打印雀扶。作為程序員杖小,要學(xué)會(huì)用計(jì)算機(jī)的思維去思考問(wèn)題。計(jì)算機(jī)的特點(diǎn)是高效愚墓,笨予权。什么意思,就是當(dāng)我們選擇使用日志的時(shí)候浪册,如果不做任何配置扫腺,那么,所有的日志都會(huì)導(dǎo)入一個(gè)日志文件村象,然后這個(gè)日志文件的內(nèi)存就會(huì)一直變大笆环,里面的內(nèi)容雜亂無(wú)章攒至。只要是日志就往里面放。對(duì)于這樣的日志躁劣,沒(méi)有任何意義迫吐。頂多只能在運(yùn)行的時(shí)候觀察一下,但是如果需要通過(guò)日志文件來(lái)進(jìn)行二次使用账忘,是根本不可能的志膀。那么我們需要對(duì)日志進(jìn)行分類。這里的分類分兩種鳖擒,這兩種是并行的:
  • 一種是按時(shí)間切分梧却。(修改tomcat的catalina.sh文件,具體操作可以去網(wǎng)上查詢)败去。我們可以按天分類放航,并且將日志文件的名字也按天命名,這樣查詢的時(shí)候就會(huì)非常方便圆裕。

  • 同時(shí)我們還要按需求分類广鳍,什么意思,比如說(shuō)吓妆,我的異常都打印到一個(gè)日志赊时,我有不同的模塊,我的每一個(gè)模塊的日志劃分到某一個(gè)模塊日志文件行拢,比如我的登錄日志祖秒,就放到登錄日志文件里面,查詢?nèi)罩揪头诺讲樵內(nèi)罩纠锩嬷鄣欤踔吝€能細(xì)化到竭缝,訂單查詢,用戶查詢分到不同的日志文件里面沼瘫。

我這次分享的內(nèi)容就是這些抬纸,希望每個(gè)人都能好好的使用日志。讓我們的代碼更加僅僅有條耿戚。bug更少湿故,效率更高。謝謝膜蛔!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坛猪,一起剝皮案震驚了整個(gè)濱河市篙悯,隨后出現(xiàn)的幾起案子群发,更是在濱河造成了極大的恐慌次氨,老刑警劉巖会钝,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澜沟,死亡現(xiàn)場(chǎng)離奇詭異夹纫,居然都是意外死亡拄显,警方通過(guò)查閱死者的電腦和手機(jī)将饺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)战转,“玉大人搜立,你說(shuō)我怎么就攤上這事』毖恚” “怎么了啄踊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)刁标。 經(jīng)常有香客問(wèn)我颠通,道長(zhǎng),這世上最難降的妖魔是什么膀懈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任顿锰,我火速辦了婚禮,結(jié)果婚禮上启搂,老公的妹妹穿的比我還像新娘硼控。我一直安慰自己,他們只是感情好胳赌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布牢撼。 她就那樣靜靜地躺著,像睡著了一般疑苫。 火紅的嫁衣襯著肌膚如雪熏版。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天捍掺,我揣著相機(jī)與錄音撼短,去河邊找鬼。 笑死乡小,一個(gè)胖子當(dāng)著我的面吹牛阔加,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播满钟,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼胳喷!你這毒婦竟也來(lái)了湃番?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吭露,失蹤者是張志新(化名)和其女友劉穎吠撮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體讲竿,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泥兰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年弄屡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞋诗。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膀捷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出削彬,到底是詐尸還是另有隱情全庸,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布融痛,位于F島的核電站壶笼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏雁刷。R本人自食惡果不足惜覆劈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沛励。 院中可真熱鬧墩崩,春花似錦、人聲如沸侯勉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)址貌。三九已至铐拐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間练对,已是汗流浹背遍蟋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留螟凭,地道東北人虚青。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像螺男,于是被迫代替她去往敵國(guó)和親棒厘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 在應(yīng)用程序中添加日志記錄總的來(lái)說(shuō)基于三個(gè)目的:監(jiān)視代碼中變量的變化情況下隧,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 4,966評(píng)論 0 6
  • 在應(yīng)用程序中添加日志記錄總的來(lái)說(shuō)基于三個(gè)目的:監(jiān)視代碼中變量的變化情況奢人,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 4,953評(píng)論 1 13
  • idea 添加注釋/** 然后回車 選中代碼塊 Ctrl+Shift+/ 重點(diǎn)推薦閱讀:https://www....
    Helen_Cat閱讀 19,757評(píng)論 0 37
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一、L...
    enshunyan閱讀 3,276評(píng)論 0 0
  • “講課語(yǔ)言要平和 就是說(shuō)人話淆院,讓學(xué)生聽(tīng)得懂 許多老師何乎,老說(shuō)則怎么樣 則怎么樣,我把他們 稱為老則老師” 周沛耕老先...
    無(wú)所事事的盲從閱讀 60評(píng)論 0 0