使用slf4j
- 使用門(mén)面模式的日志框架,有利于項(xiàng)目的維護(hù)和各個(gè)類(lèi)的日志處理方式的統(tǒng)一。
- 實(shí)現(xiàn)方式統(tǒng)一使用logback或者log4j2框架。
什么時(shí)候應(yīng)該打印日志
- 需要debug確定問(wèn)題的時(shí)候,應(yīng)該考慮打印日志,通過(guò)日志進(jìn)行問(wèn)題定位。
- 當(dāng)碰到if…else或switch這樣的分支時(shí),需要在首行打印日志,用來(lái)確定進(jìn)入了哪個(gè)分支。
- 需要通過(guò)日志看到整個(gè)功能流程時(shí)。
日志的格式
- 使用參數(shù)化信息的方式:
logger.debug("Processing trade with id:[{}] and symbol:[{}]",id,symbol);
- 不要使用字符串拼接的方式,那樣會(huì)產(chǎn)生很多String對(duì)象
- 使用[]進(jìn)行參數(shù)隔離
- 如果有異常信息,需要記錄完整的堆棧信息
日志的級(jí)別
Error:影響到程序正常運(yùn)行的異常情況
- 如果進(jìn)行了拋異常的操作,不要記錄日志,應(yīng)由最終的調(diào)用方處理。
Warn:不應(yīng)該出現(xiàn)但是不影響程序的異常情況
- 有容錯(cuò)機(jī)制時(shí)出現(xiàn)的錯(cuò)誤
- 找不到配置文件但系統(tǒng)可以自動(dòng)配置
- 系統(tǒng)性能達(dá)到臨界值
- 接口拋出業(yè)務(wù)異常時(shí)
Info:系統(tǒng)的運(yùn)行時(shí)信息
- 系統(tǒng)狀態(tài)的變更
- 主要邏輯中的步驟
- 客戶端請(qǐng)求的參數(shù)
- 調(diào)用的結(jié)果
- 簡(jiǎn)單的Service只需要在出入口記錄
- 復(fù)雜的程序邏輯需要記錄
- 整個(gè)系統(tǒng)的接口需要記錄入?yún)?/li>
- 調(diào)用外部接口時(shí)要記錄入?yún)⒑统鰠?/li>
Debug
- 記錄所有想知道的信息
- 生產(chǎn)環(huán)境需要關(guān)閉debug級(jí)別的日志
- 如果生產(chǎn)環(huán)境需要開(kāi)啟debug級(jí)別的日志,請(qǐng)使用開(kāi)關(guān)進(jìn)行開(kāi)啟,不要一直開(kāi)啟