iOS - 日志打印收集第三方库调研

日志分类

首先收集日志根据日志上传的时机分为实时日志与非实时日志

  • 实时日志:收集结束后立刻上传到服务器。
  • 非实时日志:当日志累计到一定数量时上传到服务器。

对于实时日志来说文件大小实际上在一定范围之内的。而非实时日志由于是信息累积一段时间后才会上传到服务器,所以对于非实时日志我们需要控制日志的大小不能让日志文件无限增加。当然仅仅控制大小也是不行的,如果用户使用次数很少而且我们的数据要一天统计一次那么就会出现很多天都统计不到用户的相关数据。所有我们也要控制非实时日志的过期时间。如果日志已经过期但大小没有达到限制或者大小已经达到限制但没有到达过期时间都是要上传到服务器的。

对于实时日志与非实时日志上传服务器来说都要有相关的错误处理。对于实时日志来说,如果上传失败的话如果网络连接正常要尝试重新上传,当然这不是无限上传的要有重试的次数,如果超出重试次数,那么上传失败。对于非实时日志来说也是一样的处理逻辑。

更根据收集的数据来分类日志可以分为事件日志,用户信息日志,崩溃日志

  • 事件日志:也可以理解为用户行为数据。当用户使用某个功能或者进入某个页面时会收集相关的信息来统计每个用户使用应用时习惯性操作,与偏好的功能还有页面的 PV 等。当然也可以获取到每个用户在当前页面所停留的时间。来判断当前页面是否能过吸引用户。
  • 用户信息日志:这些信息主要是为了针对不同的用户来展示不同的功能或者内容,当然也包括当前使用机型的信息有些基本信息可以直接放在请求头的 UserAgent 中而不需要单独来统计。
  • 崩溃日志:应用崩溃信息。

日志收集框架

1.CocoaLumberjack(OC)

Star 数:10,467
最近一次更新时间:29 天以前
谷歌搜索词条结果:32,000
百度搜索词条结果:5,000
是否也支持 Swift:是
是否有中文文档:否

详细功能:

  1. 支持日志打印到 Xcode 控制台,打印到 mac 的 console 程序、打印到文件
  2. 日志功能支持关闭和打开,支持 Error、Warning、Info、Debug、Verbose、All 日志等级
  3. 支持基于 DDLogFormatter 协议自定义日志格式和继承 DDAbstractLogger 和协议 DDLogger 自定义 logger
  4. 可将日志打印上传到服务器
  5. 基于多线程、GCD、运行时态等

使用体验:非常容易上手。导入需要使用的类,pod install 就可直接运行。demo 可直接运行,自建工程导入框架也都流畅运行。

2.NSLogger(OC)

Star 数:4,313
最近一次更新时间:三个月前
谷歌搜索词条结果:7,490
百度搜索词条结果:7,880
是否也支持 Swift:是
是否有中文文档:否

详细功能:

  1. 使用桌面应用程序查看日志
  2. 可以从设备或模拟器发送日志
  3. 接受来自本地网络客户端(使用 Bonjour)或直接通过 Internet 连接的远程客户端的连接
  4. 在线(运行并连接到 NSLogger 的应用程序)和脱机(保存的日志)日志查看
  5. 缓冲内存或文件中的所有跟踪,在获取连接时将其发送给查看器
  6. 定义日志域(应用程序,视图,模型,控制器,网络……)和重要性级别(错误,警告,调试,噪音…)
  7. 使用 regexp 为日志消息着色
  8. 记录图像或原始二进制数据
  9. 安全日志记录(默认情况下连接使用SSL)
  10. 高级日志过滤选项
  11. 保存查看器日志以便共享和/或稍后查看它们
  12. 将日志导出到文本文件
  13. 打开从未直接连接到日志查看器的客户端应用程序返回的原始缓冲跟踪文件

使用体验:demo 无法正常运行,文档描写不清晰。自建工程导入框架按照文档实现方法,报错。

3.SwiftyBeaver (Swift)

Star 数:3,711
最近一次更新时间:两个月以前
谷歌搜索词条结果:13,300
百度搜索词条结果:62,800
是否有中文文档:否

详细功能:

  1. log 输出到 Xcode 控制台 或 输出到文件
  2. 添加 自定义日志目标 处理程序以登录 Loggly,Redis 等。
  3. 将带有端到端 AES256 加密的日志发送到 SwiftyBeaver Mac App
  4. 彩色输出到日志文件等
  5. 使用自己的串行后台队列/线程 以获得出色的性能
  6. 低于设定的最小值的日志级别不会执行,以获得更好的发布性能
  7. 使用多个日志记录目标和设置,即使是相同类型
  8. 完全可定制的日志格式
  9. 强大的过滤器
  10. 使用 log.debug(“foo”) 语法
  11. 非常详细的日志记录(可选):
    • 时间(精确到微秒)
    • 水平(颜色输出)
    • 线程名称 (如果不是主线程)
    • 文件名,功能和行
    • 消息(可以是字符串或任何类型的变量)

使用体验:有一定门槛,但上手后操作非常简单。swift 上测试成功,oc 有报错问题。有配套软件,可接收来自 App 端打印的数据,配置 App id 和 App key,免费版可保存数据云端一小时,收费版七天起。demo 无法直接运行,自建工程导入框架可流畅运行。

4.GodEye (Swift)

Star 数:3,102
最近一次更新时间:三个月前(readme.md),一年前(其他)
谷歌搜索词条结果:59,800
百度搜索词条结果:81,900
是否有中文文档:是

详细功能:

  1. 监控日志并区分日志类型.
  2. 监控崩溃, 包括 Uncatched Exception 和 Signal 崩溃.
  3. 监控网络, 包括请求和响应的所有信息.
  4. 监控卡顿, 并告诉你卡顿时候的所有线程的堆栈.
  5. 监控内存泄露, 告诉你泄露的对象的类名.
  6. 提供一个可以自定义指令和输出的控制台.
  7. 监控系统和应用自身的 CPU 使用率.
  8. 监控系统与应用自身的内存使用率.
  9. 监控帧率 FPS.
  10. 监控系统和应用自身的网络流量.
  11. 提供一个文件浏览器可用于查看沙盒,.app 以及系统根目录的文件.
  12. 运行时自定义设置

使用体验:demo 无法正常运行,导入后需要配置参数很多,尝试两次后仍旧无法运行后放弃。这个库的作者出了一本书,这个库大概为了宣传书籍而附带出的。

5.结论

推荐使用 CocoaLumberjack。

------本文结束 感谢阅读------
众筹项目:拯救世界!
0%