JJSwiftLog设计文档
在开发这个库的时候,我们要给它设定一个目标,这个日志库给我们解决什么问题,为什么需要一个日志库来辅助我们开发,以及日志库的价值是什么,我总结的以下几个点:
- 调试开发
开发阶段输出辅助开发的重要信息,帮助快速定位信息,提高查找问题的效率,同时也要展示重要信息
- 排除线上问题
日志会记录重要路径的信息,以及记录各类错误信息,排查问题除了debug之外的有效手段
- 记录重要信息
各个业务都会记录重要信息给日志,让日志库保存到我们想保存的位置,方便我们查看和分析
问题
日志库需要注意的问题:
-
I/O和CPU的占有率问题,尽可能的减少对系统的影响,让接入方对这点没有顾虑
-
性能问题,作为日志库不希望影响整体app的流畅度,能快速处理所有情况,这个是对日志库的基本要求
-
稳定性,这也是日志库的基本要求
-
安全性,本地存储或者网络存储需要注意的问题,来保证信息不被泄露和篡改
架构位置和冗余设计
日志应该是最基础的库之一,应该是最底层的库,供底层和业务服务,从层次来说应该再最下面,当然如果有些库想不依赖的特殊情况除外,因为下面会提到安全和网络这块,我的理解是这块可能需要我们通过冗余的设计来解决依赖的问题,来保证日志库的内聚,尽量减少外部耦合,