對于現(xiàn)在的應(yīng)用程序來說,日志的重要性是不言而喻的。很難想象沒有任何日志記錄功能的應(yīng)用程序運行在生產(chǎn)環(huán)境中。日志所能提供的功能是多種多樣的,包括記錄程序運行時產(chǎn)生的錯誤信息、狀態(tài)信息、調(diào)試信息和執(zhí)行時間信息等。在生產(chǎn)環(huán)境中,日志是查找問題來源的重要依據(jù)。應(yīng)用程序運行時的產(chǎn)生的各種信息,都應(yīng)該通過日志 API 來進行記錄。
- 完成某項操作所需的時間 ??
通過它可以跟蹤為什么系統(tǒng)響應(yīng)變慢或者太快
- 處理完一個請求所耗費的時間,精確到毫秒
- 執(zhí)行數(shù)據(jù)庫查詢的時間
- 從磁盤或者存儲介質(zhì)獲取數(shù)據(jù)的時間
- 等等
- 異常和堆棧跟蹤
- Sessions
知道一個問題是由誰引起的非常重要,因此在日志中使用會話標(biāo)識符就變得必不可少。它可以簡單到是一個 IP 地址或者是一個更復(fù)雜的 UUID,只要能區(qū)分不同的請求者就足夠。
- 版本號
- 使用第三方類庫
從發(fā)展方向上看,應(yīng)該選擇slf4j和logback。 當(dāng)根據(jù)網(wǎng)上的測試,還是log4j比較性能比較好。
- 檢查日志是否可以被記錄
if (LOGGER.isDebugEnabled()) { LOGGER.debug("This is a message."); }
-
在適當(dāng)?shù)募墑e進行l(wèi)og
- FATAL:導(dǎo)致程序提前結(jié)束的嚴(yán)重錯誤。
- ERROR:運行時異常以及預(yù)期之外的錯誤。
- WARN:預(yù)期之外的運行時狀況,不一定是錯誤的情況。
- INFO:運行時產(chǎn)生的事件。
- DEBUG:與程序運行時的流程相關(guān)的詳細(xì)信息。
- TRACE:更加具體的詳細(xì)信息。
- 謹(jǐn)慎修改配置文件
- 第三方包的信息
自然是配角,不要顯示大量的第三方包中的debug信息。只顯示warning以上信息。
- 日志包括線程和時間戳信息。
方便多線程下的調(diào)試。
- 日志包含上下文信息。
系統(tǒng)出錯時,各個參數(shù)的信息,操作人員的信息。
- 日志包含充分的信息
比如不應(yīng)該為null的為null了;某個范圍的設(shè)置值超出范圍。
- 你應(yīng)該用機器可以解析的格式記錄日志
利用使用其他工具進行分析。
- 不同業(yè)務(wù)領(lǐng)域使用不同的日志
比如系統(tǒng)登錄日志,郵件發(fā)送日志,訂單建立日志等等。
?
參考
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
