Skip to main content

SDK 日志

SDK 日志是 Bugly SDK 提供的简单日志系统,允许业务记录部分 App 运行的日志,在发生 Crash 时,自动将这部分日志上报到 Bugly 平台,并在 Crash 个例中展示。

tip

需要 SDK 版本为 2.8.1 及以后版本支持。

使用方式

确保在接入 Bugly SDK 时接入了 Logger 模块:

  1. 接入 Bugly/Logger 模块:
target 'XXX' do

pod 'BuglyPro' # 直接接入了 Bugly 所有模块
# 两种接入方式中选择一种即可,不可以同时存在
pod 'BuglyPro/Logger' # 单独接入 Logger 模块

end
  1. 需要在启动模块中包含 BUGLY_MODULE_LOGGER 或使用 RM_MODULE_ALL:
[Bugly start:@[BUGLY_MODULE_LOGGER, /*...*/] config:config completeHandler:^{/*...*/}];
// 或
[Bugly start:RM_MODULE_ALL config:config completeHandler:^{/*...*/}];
  1. 需要在 SDK 配置中开启日志模块配置:

开启日志模块配置

  1. 成功开启后,会在 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;

注意事项

  1. 该日志模块通过简单的缓存和文件实现,因此其性能开销无法保障(非高性能日志记录),因此避免在性能敏感的场景中使用(主线程 UI 绘制等);
  2. 日志文件会在发生崩溃后,再次启动 App 触发上报逻辑,对日志文件大小进行了严格限制,目前最大保留最后 1MB 的日志文件内容进行上报,其他更早的日志会被丢弃,因此应该在必要时使用此能力输出日志;
  3. 非崩溃情况下,再次启动 App 上一生命周期内记录的日志会被清理,避免日志累计过多造成磁盘空间浪费;

日志文件查看

  1. 日志上报后,会关联到对应的崩溃个例中展示,用户可以在 Bugly Crash 个例的“消息详情”-“日志”中查看;

日志查看

  1. 同时在“消息详情”-“附件”中会有日志文件下载链接(log.txt.zip)。

日志下载

与 TDOS_Diagnose 日志的区别

  1. TDOS_Diagnose 日志是完整的日志系统,其包含 App 生命周期完整的日志, Bugly Logger 模块仅保留崩溃前的部分日志;
  2. TDOS_Diagnose 日志在必要时主动上传或者通过平台下方命令字后上报对应的日志,Bugly Logger 模块仅支持崩溃发生时自动上报;
  3. Bugly Logger 是帮助业务定位问题提供的辅助能力,不可替代业务的日志系统;
  4. 若需要在 Crash 时上报业务自定义日志,可以通过自定义业务文件接口上传。