應(yīng)用里的日志實(shí)踐

使用日志facade slf4j

在代碼中不直接使用具體日志LIB庫API巨坊,例如log4j,logback等躁锁,使用日志facade 庫slf4j减俏。使用facade的好處是,與日志實(shí)現(xiàn)解耦贸街,可以方便切換日志實(shí)現(xiàn)。

log4j日志性能

log4j rootLogger對象鎖由于比較粗的控制粒度狸相,導(dǎo)致高并發(fā)日志輸出頻繁的時(shí)候薛匪,性能下降很厲害。log4j2在性能上有了很大的提升脓鹃。推薦使用log4j2 的異步appender逸尖。

image
image

日志級別

log4j2 日志級別有OFF,F(xiàn)ATAL,ERROR娇跟,WARN岩齿,INFO,DEBUG苞俘,ALL盹沈。建議只使用 DEBUG、INFO吃谣、WARN乞封、ERROR這四個(gè)級別,這些日志級別也是slf4j使用的級別岗憋。

典型的級別有:

  • DEBUG——最詳細(xì)肃晚,但是只有在開發(fā)或者調(diào)試時(shí)適用
  • INFO——最常用的級別
  • WARN——發(fā)生不在預(yù)期之內(nèi)的一些狀態(tài),但是可接受
  • ERROR——有錯(cuò)誤發(fā)生

在不同環(huán)境會(huì)采用不同的日志級別仔戈。一般关串,相比較第三方庫里輸出的日志,我們更關(guān)注自己應(yīng)用程序的日志記錄杂穷。

  • 開發(fā)/測試環(huán)境:應(yīng)用 DEBUG 第三方庫 WARN
  • 生產(chǎn)環(huán)境:應(yīng)用 INFO 第三方庫 WARN

log4j2配置monitorInterval悍缠,在運(yùn)行時(shí)修改配置,可以直接生效日志配置耐量。在生產(chǎn)環(huán)境飞蚓,偶爾在需要的時(shí)候,會(huì)開啟debug級別廊蜒,獲取更多的日志信息來分析問題趴拧。

使用slf4j parameterized logging

當(dāng)日志語句禁用的情況下, 使用parameterized logging 參數(shù)化日志山叮, 可以提升性能著榴。

例如:

logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));

不管debug級別日志是否啟用,日志文本都會(huì)進(jìn)行類型轉(zhuǎn)化和文本拼接的操作屁倔。

通常我們可以通過增加判斷脑又,來避免不必要的文本拼接操作。

if(logger.isDebugEnabled()) {
  logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
}

使用這種方法锐借,不論是否debug 開啟问麸,增加 了 檢查 日志是否啟用的判斷一次是 isDebugEnabled 一次是debug方法里面。

slf4j提供了 parameterized logging機(jī)制钞翔,只有要必要的情況下严卖,才會(huì)對日志本本進(jìn)行組裝。

logger.debug("Entry number: {} is {}", i, entry[i]);

記錄布轿,切記過多過少

日志信息哮笆,可以幫助定位問題来颤,也可以利用日志信息,分析用戶行為稠肘,用于統(tǒng)計(jì)信息福铅。

日志過多,會(huì)占用太大的磁盤空間启具,難以維護(hù)本讥。

比起日志過少,日志過多倒并不是什么大問題鲁冯。一般拷沸,日志都是會(huì)手機(jī)到日志服務(wù)器去做集中式存儲(chǔ),便于后期分析和統(tǒng)計(jì)需要薯演。
日志過少時(shí)撞芍,因?yàn)槿鄙傩畔ⅲ治鯾ug和故障的時(shí)候就捉襟見肘了跨扮。

盡量在日志中序无,包含足夠的信息。例如 操作的數(shù)據(jù)衡创、業(yè)務(wù)數(shù)據(jù)等信息帝嗡,便于快速的診斷問題。

記錄性能信息

記錄執(zhí)行時(shí)間可以用來幫助定位性能問題璃氢。一般只需要記錄那些可能比較耗時(shí)的地方:

  • 慢服務(wù)調(diào)用
  • 慢servie層方法
  • 慢執(zhí)行SQL語句
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哟玷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子一也,更是在濱河造成了極大的恐慌巢寡,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,332評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椰苟,死亡現(xiàn)場離奇詭異抑月,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舆蝴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評論 3 385
  • 文/潘曉璐 我一進(jìn)店門谦絮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洁仗,你說我怎么就攤上這事层皱。” “怎么了京痢?”我有些...
    開封第一講書人閱讀 157,812評論 0 348
  • 文/不壞的土叔 我叫張陵奶甘,是天一觀的道長篷店。 經(jīng)常有香客問我祭椰,道長臭家,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,607評論 1 284
  • 正文 為了忘掉前任方淤,我火速辦了婚禮钉赁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘携茂。我一直安慰自己你踩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評論 6 386
  • 文/花漫 我一把揭開白布讳苦。 她就那樣靜靜地躺著带膜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸳谜。 梳的紋絲不亂的頭發(fā)上膝藕,一...
    開封第一講書人閱讀 49,919評論 1 290
  • 那天,我揣著相機(jī)與錄音咐扭,去河邊找鬼芭挽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蝗肪,可吹牛的內(nèi)容都是我干的袜爪。 我是一名探鬼主播,決...
    沈念sama閱讀 39,071評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼薛闪,長吁一口氣:“原來是場噩夢啊……” “哼辛馆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逛绵,我...
    開封第一講書人閱讀 37,802評論 0 268
  • 序言:老撾萬榮一對情侶失蹤怀各,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后术浪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓢对,經(jīng)...
    沈念sama閱讀 44,256評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評論 2 327
  • 正文 我和宋清朗相戀三年胰苏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硕蛹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,712評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡硕并,死狀恐怖法焰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情倔毙,我是刑警寧澤埃仪,帶...
    沈念sama閱讀 34,389評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站陕赃,受9級特大地震影響卵蛉,放射性物質(zhì)發(fā)生泄漏颁股。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評論 3 316
  • 文/蒙蒙 一傻丝、第九天 我趴在偏房一處隱蔽的房頂上張望甘有。 院中可真熱鬧,春花似錦葡缰、人聲如沸亏掀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滤愕。三九已至,卻和暖如春怜校,著一層夾襖步出監(jiān)牢的瞬間该互,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評論 1 266
  • 我被黑心中介騙來泰國打工韭畸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宇智,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,473評論 2 360
  • 正文 我出身青樓胰丁,卻偏偏與公主長得像随橘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子锦庸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評論 2 350

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

  • 歷史 log4j可以當(dāng)之無愧地說是Java日志框架的元老机蔗,1999年發(fā)布首個(gè)版本,2012年發(fā)布最后一個(gè)版本甘萧,20...
    kelgon閱讀 10,146評論 3 53
  • 前言 最近學(xué)習(xí)開java web服務(wù)器開發(fā)萝嘁,開始學(xué)習(xí)java,處理業(yè)務(wù)邏輯扬卷,但對其中的日志比較好奇牙言,之前沒怎么接觸...
    九風(fēng)萍舟閱讀 3,290評論 1 6
  • 在項(xiàng)目開發(fā)過程中,我們可以通過 debug 查找問題怪得。而在線上環(huán)境我們查找問題只能通過打印日志的方式查找問題咱枉。因此...
    Java架構(gòu)閱讀 3,470評論 2 41
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風(fēng)情閱讀 1,653評論 0 3
  • 3 slf4j 3.1 簡介 與commons-logging相同,slf4j也是一個(gè)通用的日志接口徒恋,在程序中與其...
    賈博巖閱讀 2,760評論 0 7