【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直接在服务端进行落盘。