Bugtags 使用技巧之 BTGLog

目录
  1. 1. Bugtags 使用技巧系列

日志是开发过程中需要经常打交道的东西,我们经常需要输出一些日志以方便调试或者定位一些问题。一般情况下,我们会用官方的日志工具:NSLog 来输出日志,当然这在 Debug 状态下完全没有问题,但是在 Release,如果过多的通过 NSLog 输出日志,会对应用的性能产生一定的影响。

为了解决这个问题,一般情况下大家会定义一个宏,如下:

1
2
3
4
5
#ifdef DEBUG
#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define DLog(...)
#endif

使用的时候就可用 DLog 来代替 NSLog 来输出日志,使用方法基本一致。这就实现了只在 Debug 模式下才会输出日志,Release 模式下就啥也不输出了,从而不影响应用上线后的性能。

但是问题又来了,如果这样处理了以后,线上应用出了 Bug 就挺难定位了,因为基本不输出任何日志了,虽然 Bugtags SDK 可以自动抓取日志,但是如果不输出日志,那也是无能为力的。

为了解决这个问题,Bugtags SDK 提供了一个专用日志接口:BTGLog,使用方法与 NSLog 基本一致,通过 BTGLog 来输出日志,日志将不会输出到系统的日志文件里去,而是被缓存并在应用发生闪退,或者手动通过 Bugtags SDK 提交 Bug 的时候同步到 Bugtags 的管理云端。

如这样调用:

1
BTGLog(@"%@", @"这是一个 Bugtags Log 测试");

应用发生闪退,或者手动通过 Bugtags SDK 提交 Bug 后,在相应问题详细页的 Bugtags 日志 里就可以看到这一行日志:

Bugtags 日志

当然,这一行日志是不会出现在 控制台日志 里,因为根本就不有往系统的日志文件里输出过。所以,BTGLog 既不影响应用的性能,同时方便开发者定位和解决问题,注意:BTGLog 日志只会记录在内存,手动 KILL 应用后,数据将会清空

好吧,问题又来了,如果直接用 BTGLog 来输出日志的话,在用 Xcode Debug 的时候,在 Xcode 里就不会有任何的日志输出了,也是不太方便,怎么解决呢?解决这个问题就很简单啦,改改本文开头的代码就可以啦,如下:

1
2
3
4
5
#ifdef DEBUG
#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define DLog(fmt, ...) BTGLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#endif

然后就直接调用 DLog 来输出日志,这就实现了通过 Xcode Debug 的时候,可以在 Xcode 里看日志,应用上线后,就只会将日志同步到 Bugtags 云端。

注意:别忘了在调用 DLog 的类中导入 Bugtags 的头文件,#import <Bugtags/Bugtags.h>

如果还没用使用 BTGLog,现在就试试吧!Swift 应用可以调用 Bugtags.log 来实现同样的功能。
PS: Bugtags Android SDK 有同样功能哦!


Bugtags 使用技巧系列

相关文章推荐