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 时上报业务自定义日志,可以通过自定义业务文件接口上传。