NSLog或os_log:如何记录多个iOS版本?

有一天,我们的质量检查人员通知我,在iOS 10设备上进行测试时,他没有看到我们的日志消息。

“早上好,Siri亲爱的,”我单击了屏幕右上角的圆形图标。 “我没有看到我的NSLog消息,请告知…”

她傲慢地回答:“您应该切换到os_log API”。 “而且请不要再问我紫色36倍是多少,哪只熊是最好的,或者查克·诺里斯(Chuck Norris)可以通过打架击败雷神”。

谢谢Siri,我拭目以待。

基本上,快速浏览一下我们的代码发现,我们的NSLog调用不再显示在控制台应用程序中。 现在,我们将代码编写为库。 这意味着我们在应用程序中的日志消息,即我们的质量检查人员在测试时寻找的消息,是发行版中编译的dylib的一部分。 在这种情况下,NSLog从iOS 10.0开始不起作用。 有什么用? 好吧,根据Siri所说,应该有一个新的API,即os_log API。

您问什么是os_log API? 好吧,它正式被称为“统一日志系统”。其功能被描述为“集中日志数据在内存中和磁盘上数据存储的集中化”。

因此,我们面临着相当大的难题。 Siri自己说,新的os_log API是可行的方法,但仅从iOS 10.0开始可用。 我们别无选择-我们必须在可用时使用新的API,但对于旧版本仍要使用NSLog。

我们该怎么做?

要阅读整个故事,请单击此处。