SDK 日志
SDK 日志是 Bugly SDK 提供的简单日志系统,允许业务记录部分 App 运行的日志,在发生 Crash 时,自动将这部分日志上报到 Bugly 平台,并在 Crash 个例中展示。
tip
需要 SDK 版本为 2.8.1 及以后版本支持。
使用方式
确保在接入 Bugly SDK 时接入了 Logger 模块:
- 接入
Bugly/Logger
模块:
target 'XXX' do
pod 'BuglyPro' # 直接接入了 Bugly 所有模块
# 两种接入方式中选择一种即可,不可以同时存在
pod 'BuglyPro/Logger' # 单独接入 Logger 模块
end
- 需要在启动模块中包含
BUGLY_MODULE_LOGGER
或使用RM_MODULE_ALL
:
[Bugly start:@[BUGLY_MODULE_LOGGER, /*...*/] config:config completeHandler:^{/*...*/}];
// 或
[Bugly start:RM_MODULE_ALL config:config completeHandler:^{/*...*/}];
- 需要在 SDK 配置中开启日志模块配置:
- 成功开启后,会在 SDK 启动时,输出的模块开启日志中包含对应的模块名称:
[Bugly][Event][BuglyDAUReporter.m:100][SDK setup] Activate Module:(
"logger"
...
)
日志接口
成功开启 logger 模块后,便可以使用 Bugly 提供的日志接口进行日志记录。与一般的日志接口类似,Bugly 提供了以下几个日志接口:
BuglyLogDebug("Bugly", @"debug log: %s", "log1");
BuglyLogInfo("Bugly", @"Info log: %s", "log2");
BuglyLogWarn("Bugly", @"Warn log: %s", "log3");
BuglyLogError("Bugly", @"Error log: %s", "log4");
BuglyLogFatal("Bugly", @"Fault log: %s", "log5");
业务可以按照需求使用不同的日志级别进行日志记录。在必要时,可以指定不同的日志级别来区分或保留不同级别的日志:
// 具体支持的日志级别,可以参考 BuglyLogger.h 中 BUglyLogLevel 定义
[BuglyLogger defaultLogger].logLevel = BuglyLogLevelAll;
注意事项
- 该日志模块通过简单的缓存和文件实现,因此其性能开销无法保障(非高性能日志记录),因此避免在性能敏感的场景中使用(主线程 UI 绘制等);
- 日志文件会在发生崩溃后,再次启动 App 触发上报逻辑,对日志文件大小进行了严格限制,目前最大保留最后 1MB 的日志文件内容进行上报,其他更早的日志会被丢弃,因此应该在必要时使用此能力输出日志;
- 非崩溃情况下,再次启动 App 上一生命周期内记录的日志会被清理,避免日志累计过多造成磁盘空间浪费;
日志文件查看
- 日志上报后,会关联到对应的崩溃个例中展示,用户可以在 Bugly Crash 个例的“消息详情”-“日志”中查看;
- 同时在“消息详情”-“附件”中会有日志文件下载链接(log.txt.zip)。
与 TDOS_Diagnose 日志的区别
- TDOS_Diagnose 日志是完整的日志系统,其包含 App 生命周期完整的日志, Bugly Logger 模块仅保留崩溃前的部分日志;
- TDOS_Diagnose 日志在必要时主动上传或者通过平台下方命令字后上报对应的日志,Bugly Logger 模块仅支持崩溃发生时自动上报;
- Bugly Logger 是帮助业务定位问题提供的辅助能力,不可替代业务的日志系统;
- 若需要在 Crash 时上报业务自定义日志,可以通过自定义业务文件接口上传。