TinyLog iOS v3.0设计文档

1. 背景

TinyLog Android 早就已经完成了v1.0v2.0功能,v2.0的功能较v1.0新增和优化了很多,且已集成到腾讯开心鼠 ABCmouse,并上线运行了一段时间。

iOS因人力原因,一直停留在v1.0,并未集成到任何App中。考虑到Android 和iOS开发同学在不同组,项目推进和需求对齐会有点麻烦,故iOS端也移交到ABCmouse组来进行开发,并对齐Android 2.0的功能。

梳理需求时发现其实核心模块,如写日志、写文件、加密、压缩等模块均可以使用c++实现,可以实现一套代码两端使用。因此在排期允许的情况下,本版本TinyLog iOS干脆直接使用c++重写了一遍,在线上验证ok后,Android端也切换到c++,节省后续版本如v4.0的开发人力。

2. 实现简介

TinyLog整体结构图如下:
TinyLog iOS v3.0设计文档_第1张图片

除了日志脱敏以及对外的接口使用Objective-C,其他部分均使用c++实现。

其中比较重要的过程有:

  1. 初始化流程
    TinyLog iOS v3.0设计文档_第2张图片

  2. 写日志流程
    TinyLog iOS v3.0设计文档_第3张图片

  3. 文件打包流程
    TinyLog iOS v3.0设计文档_第4张图片

3. 边界条件与极端情况

  1. 单条日志格式化后长度超过4096字节
    预期结果:只记录前4096字节

  2. buffer长度超过150 * 1024字节
    预期结果:触发flush机制,落地到.log文件

  3. 多线程大量写日志
    预期结果:日志组件记录正常,无crash

代码地址:http://git.code.oa.com/bearhuang/TinyLog.git, project分支

4. 性能测试对比:

TinyLog iOS v3.0设计文档_第5张图片

你可能感兴趣的:(iOS,TinyLog)