Java中日志打印的方式

使用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)啟
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容