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