背景
日誌重要性不言而喻:
- 快速定位和重現問題
- 發現服務瓶頸(服務耗時,當然這一部分也可以通過其他無入侵式監控方式實現)
日誌分類
分類 | 說明 | @cols=1:一般面向人員 |
---|---|---|
診斷日誌 |
|
@cols=1:服務開發者 |
統計日誌 |
|
@cols=1:運維 |
日誌內容
原則
目前只針對診斷日誌
做說明
原則 | 說明 |
---|---|
開始輸入參數 | 方便重現問題 |
結束輸出參數 | 判斷是否符合預期 |
中間關鍵變量變化 | 儘量保證一個函數一個職責,減少中間變量 |
不可達代碼打印記錄 | 方便查找bug |
避免打印日誌引入異常 | 比如: null引用,一般框架會自帶處理 |
logging | 對於不需要輸出的日誌(DEBUG)所做的操作,避免性能損耗,比如說字符串拼接 |
設置【日誌等級】 | 生產環境關閉debug日誌,避免浪費磁盤和大量日誌干擾問題的定位 |
不要打印敏感信息 | 用戶密碼,key之類的 |
打印捕獲異常日誌 | 方便知道異常信息 |
格式
【時間】,【 等級】, 【traceId/clusterId】,【module/function】 【action】, 【changed value/arguments】
(5W1H)