参考文章:美团移动端基础日志库
简介: Logan是一个日志底层库,上层可以自定义各种类型的日志,然后交由Logan进行写入、上传等操作 。它开源了客户端,后端,前端一整套完整的系统。
一、日志系统对应用的主要影响:
- 卡顿,影响性能 — I/O操作频繁,对CPU开销比较大
- 日志丢失 — 用户发生崩溃,日志来不及写入就已经退出
- 安全性 — 日志加密
- 日志分散 — 日志类型很多,比较难综合分析
二、解决问题的思路:
- 卡顿,影响性能
- 原因:频繁I/O操作以及数据的加密
- 解决:先将数据存入缓存,待达到一定量后,再进行压缩和加密,最后写入日志文件。这样不仅能减少文件写入次数,还能减少需要加密的数据量。
- 日志丢失
- 原因:因为加了缓存,异常退出后日志更容易丢失
- 解决:引入MM机制,MMAP是一种内存映射技术,把一个文件或者其他对象映射到该进程的地址空间中,达到在我们操作进程的虚拟内存的地址时也能同时修改文件真实的磁盘地址,这既能大大降低日志丢失的概率,也能提高文件的读写效率
- 安全性
- 本地使用对称加密保存
- 上传使用非对称加密对本地的对称密钥Key加密,然后上传到服务端
- 日志分散
- 解决:各种日志聚合保存,集中上传,Logan开源了它的后台日志分析系统,能帮助我们对各种日志进行综合分析,可以结合时间轴分析用户一段时间内的行为