Java日誌規範

Java日誌規範

一般來說日誌分爲兩種:業務日誌和異常日誌,使用日誌我們希望能達到以下目標:

  • 對程序運行情況的記錄和監控;
  • 在必要時可詳細瞭解程序內部的運行狀態;
  • 對系統性能的影響儘量小

日誌系統與框架

Java日誌實踐

定義日誌變量

日誌變量往往不變,最好定義成final static,變量名用大寫。

日誌分級

Java的日誌框架一般會提供以下日誌級別,缺省打開info級別,也就是debug,trace級別的日誌在生產環境不會輸出,在開發和測試環境可以通過不同的日誌配置文件打開debug級別。

  • fatal - 嚴重的,造成服務中斷的錯誤;
  • error - 其他錯誤運行期錯誤;
  • warn - 警告信息,如程序調用了一個即將作廢的接口,接口的不當使用,運行狀態不是期望的但仍可繼續處理等;
  • info - 有意義的事件信息,如程序啓動,關閉事件,收到請求事件等;
  • debug - 調試信息,可記錄詳細的業務處理到哪一步了,以及當前的變量狀態;
  • trace - 更詳細的跟蹤信息;

基本的Logger編碼規範

  • 在一個對象中通常只使用一個Logger對象,Logger應該是static final的,只有在少數需要在構造函數中傳遞logger的情況下才使用private final。

  • 輸出Exceptions的全部Throwable信息,因爲logger.error(msg)和logger.error(msg,e.getMessage())這樣的日誌輸出方法會丟失掉最重要的StackTrace信息。

  • 不允許記錄日誌後又拋出異常,因爲這樣會多次記錄日誌,只允許記錄一次日誌。

  • 不允許出現System print(包括System.out.println和System.error.println)語句。

  • 不允許出現printStackTrace。

  • 日誌性能的考慮,如果代碼爲核心代碼,執行頻率非常高,則輸出日誌建議增加判斷,尤其是低級別的輸出<debug、info、warn>。

  • 有意義的日誌,通常情況下在程序日誌裏記錄一些比較有意義的狀態數據:程序啓動,退出的時間點;程序運行消耗時間;耗時程序的執行進度;重要變量的狀態變化。
    除此之外,在公共的日誌裏規避打印程序的調試或者提示信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章