【Hilog】鴻蒙系統日志源碼分析
- Hilog采用C/S結構,Hilogd作為服務端提供日志功能。Client端通過API調用(最終通過socket通訊)與HiLogd打交道。簡易Block圖如下。
- 這里主要分析一下。Hilog的讀、寫、壓縮落盤,以及higlog與android log在這幾個流程上的差異點。
HiLog日志寫入流程
HiLog寫入流程與Android Log主要差異點:
- Buffer滿時清理流程,higlog無android的黑白名單、 清理log輸入最多的uid的流程。hilog清理同域舊的5%的log。
- 支持域流量控制:單域固定時間端間隔內,只允許寫入固定的流量。超出流量后,Drop msg。
HiLog日志讀取流程
- HiLog讀取時基本上沒有什么差異。
HiLog日志壓縮落盤
- HiLog日志落盤與Android差異:
- 支持壓縮落盤:先將buffer壓縮,壓縮后的buffer落盤到文件中。
- HiLogD直接落盤:android log需要將log日志讀取到client端,Client端進行落盤。HiLog直接在服務端進行落盤。