前端日志系統設計


前言

日志系統是一種不可或缺的跟蹤調試工具,特別是在任何無人職守以及那些沒有跟蹤調試環境的系統中有着廣泛的應用。 長期以來, 日志系統作為一種應用程序服務,對於跟蹤調試、程序狀態記錄、崩潰數據恢復都有非常現實的意義。

1.1 前端日志的誤區

在編寫代碼的時候,隨手會用console.log()來輸出一些信息,這是往控制台輸出一段文字是查看程序運行狀態最簡單的做法,但這種方式並不能解決全部的問題。有時候,對於一個我們無法實時查看系統輸出的系統或者一個確實需要保留我們輸出信息的系統,良好的日志系統顯得相當必要。
因此,不能隨意的輸出各種不規范的調試信息,這些隨意輸出的信息是不可控的,難以清除,可能為后台監控、錯誤排除和錯誤恢復帶來相當大的阻力。

1.2 日志系統框架的基本功能

一個完備的日志系統框架通常應當包括如下基本特性:
  所輸出的日志擁有自己的分類。這樣在調試時便於針對不同系統的不同模塊進行查詢,從而快速定位到發生日志事件的代碼。
  日志按照某種標准分成不同級別。分級以后的日志,可以用於同一分類下的日志篩選。
  支持不同的記錄媒介。不同的工程項目往往對日志系統的記錄媒介要求不同,因此日志系統必須提供必要的開發接口,以保證能夠比較容易的更換記錄介質。
  高性能。在開發、生產環境可以進行過濾,減少不必要日志。
  穩定性。日志系統必須是保持高度的穩定性,不能因為日志系統內部錯誤導致主要業務代碼的崩潰。

設計

日志系統看似需要根據各種維度進行划分,比如

根據模塊:普通模塊日志,打點日志,與系統進行交互(js to native);
根據業務周期:個人測試日志,開發環境日志,上線環境日志;
由於客戶端日志系統與業務邏輯相關聯性太強,並且帶有很多主觀因素,因此日志系統最主要的是出口統一;無論在哪里打日志,都可以輕松進行管理,控制。

2.1 系統架構

2.2 日志記錄部分的設計

日志分級:

  1. 默認的 error,warn,info,log,以及不定級的trace;
  2. 通過顏色獲取級別區分;
  3. 通過新的log類型,來進行策略划分;

日志格式:

Color + 時間戳 + 模塊 + other

業務層使用:

  1. 實現 ILogWrite接口,創建新的日志類型;
  2. 通過Logger注冊;
  3. 通過Logger.trace 調用;
  4. 通過編譯器,去掉 外部使用的console.log日志輸出;

參考

NPM酷庫:log4js JavaScript日志框架
https://segmentfault.com/a/1190000012726340
日志格式規范
https://blog.csdn.net/lk142500/article/details/80424945
通用日志格式規范(參考 RFC5424 Syslog協議)
https://www.cnblogs.com/zhangjpn/p/7226541.html
代碼規范(阿里)——日志規范
https://www.jianshu.com/p/256d4dd0bd0e
日志規范
http://www.cocoachina.com/articles/30123
Java日志系統框架的設計與實現
https://blog.csdn.net/chjskarl/article/details/18987183


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM