关于日志的123
寫(xiě)在前面:
? ? 關(guān)于日志其實(shí)有很多想說(shuō)的,不過(guò)將自己整理的文檔轉(zhuǎn)化為Blog還是比較花時(shí)間的,偶有疏漏,請(qǐng)多包涵。
? ? 本篇文章所講均只止于Java。
?
日志的作用:
? ? 1.定位問(wèn)題,對(duì)于一個(gè)系統(tǒng)而言,總是會(huì)有些意外發(fā)生,例如系統(tǒng)接口被抓,被薅羊毛,如果在方法內(nèi)部記錄好日志,那么就可以定位問(wèn)題發(fā)生的位置、原因、事故對(duì)象。
? ? 2.性能優(yōu)化,對(duì)于一些報(bào)表或者其他占用IO比較大的業(yè)務(wù),通過(guò)日志可以進(jìn)行詳略得當(dāng)?shù)膬?yōu)化,這在開(kāi)發(fā)時(shí)間比較緊的時(shí)候,能夠排出先后順序,對(duì)于搶占排期有至關(guān)重要的作用。
?
常用日志級(jí)別:
? ? 1.INFO:對(duì)于系統(tǒng)運(yùn)行期的數(shù)據(jù)進(jìn)行記錄,合格INFO信息應(yīng)該對(duì)于具有高需求的數(shù)據(jù)進(jìn)行記錄,如金額、積分變化,用戶(hù)的個(gè)人數(shù)據(jù)等。另外對(duì)于改變應(yīng)用狀態(tài)的信息也應(yīng)該記錄,例如數(shù)據(jù)庫(kù)更新,其他系統(tǒng)交互等。
? ? 2.DEBUG:對(duì)于系統(tǒng)開(kāi)發(fā)時(shí),測(cè)試的數(shù)據(jù)進(jìn)行記錄,有些時(shí)候我們調(diào)試的數(shù)據(jù)并不好找,可以考慮通過(guò)Debug的日志信息進(jìn)行定位,這些不好找的信息包括:其他系統(tǒng)交互,線(xiàn)城池調(diào)用等。
? ? 3.ERROR:這個(gè)級(jí)別的信息必須被處理,一般情況下,出現(xiàn)這種信息都會(huì)造成系統(tǒng)功能癱瘓。
? ? 4.WARING:這個(gè)級(jí)別的信息可以忍受,但是應(yīng)該被關(guān)注,在有時(shí)間的時(shí)候,進(jìn)行業(yè)務(wù)評(píng)估,考慮是否需要修復(fù)處理。
? ? 以上是常用的四個(gè)日志級(jí)別,另外還有TRACE等沒(méi)有介紹,在日常使用時(shí),不同級(jí)別的日志最好輸出到不同的目錄當(dāng)中,按照日期分類(lèi)這樣在排查問(wèn)題時(shí)會(huì)非常有效。
?
日志的使用:
? ? 1.日志對(duì)象的生成:統(tǒng)一使用工廠方式創(chuàng)建對(duì)象,減少資源開(kāi)銷(xiāo)并防止意外篡改。
? ? 2.日志的使用:
? ? ? ? 推薦使用Slf4j,他的可變參數(shù)對(duì)于提升性能和減少書(shū)寫(xiě)非常有作用,此外推薦插件Lombok,不僅可以通過(guò)@Slf4j省去創(chuàng)建日志對(duì)象的煩惱,同時(shí)可以節(jié)省Pojo的構(gòu)造函數(shù)創(chuàng)建以及getter/setter方法。
? ? ? ? 必須注意,如果使用了Lombok,必須保證其他開(kāi)發(fā)者也裝了這個(gè)插件,不然會(huì)造成毀天滅地的后果。
? ? 3.注意:
? ? ? ? 3.1.debug/info級(jí)別的信息,如果業(yè)務(wù)較復(fù)雜,必須添加 isXxxEnabled() 判斷,可以減少日志的無(wú)效輸出,提升效率。
? ? ? ? 3.2.error和warn級(jí)別的信息,如果導(dǎo)致業(yè)務(wù)不正常,使用error,如果錯(cuò)誤可預(yù)期,使用warn。
? ? ? ? 3.3.異常捕獲之后應(yīng)該處理,也就說(shuō),打印錯(cuò)誤信息。捕獲異常范圍過(guò)大和捕獲不處理,都是非常不負(fù)責(zé)任的行為。
? ? ? ? 3.4.敏感信息接口應(yīng)該記錄日志。
? ? ? ? 3.5.日志信息打印要防止因?yàn)榇蛴⌒畔?wèn)題而導(dǎo)致的報(bào)錯(cuò),例如NullPointerException。
? ? ? ? 3.6.日志的分類(lèi)很重要,應(yīng)該避免將所有日志輸出到一個(gè)文件里;同時(shí),日志中的信息應(yīng)該脫敏并且盡量清晰明了,過(guò)于冗余和過(guò)于簡(jiǎn)單都是不可取的。
?
總結(jié):
? ? 好的日志可以幫助我們快速定位問(wèn)題,在系統(tǒng)性能優(yōu)化中提供可靠的數(shù)據(jù)幫助分析,在日常開(kāi)發(fā)中,我們應(yīng)該對(duì)于日志信息有更多地重視。本文僅僅是一篇入門(mén)級(jí)的簡(jiǎn)要概述,以期起到拋磚引玉的作用。在日常開(kāi)發(fā)中,日志還有很多需要注意的地方,比如參數(shù)化的多參數(shù)支持,日志的具體業(yè)務(wù)分類(lèi),這些因應(yīng)個(gè)人環(huán)境不同,會(huì)有不同的變化。
? ?希望這篇文章能對(duì)閱覽的你產(chǎn)生幫助,下期見(jiàn)。
轉(zhuǎn)載于:https://www.cnblogs.com/shxz/p/9979628.html
總結(jié)
- 上一篇: 设置Eclipse中的字符集为UTF-8
- 下一篇: vim: 远程登陆服务器时可能出现的: