为什么Crashlytics中缺少CLSLog消息?

时间:2018-08-17 05:27:46

标签: ios swift crashlytics

我有一个应用程序将其崩溃记录到Fabric的Crashlytics平台。

崩溃日志按预期方式工作,因为可以通过平台的仪表板对其进行观察。但是,对命令CLSLog的调用似乎无法正常工作。崩溃的会话的日志面板未显示正确的日志输出。

crashlytics session detail log

这是我们在应用程序中使用CLSLog的方式:

CLSLogv(message, getVaList([""]))

有人可以指出这个问题的可能原因吗?

3 个答案:

答案 0 :(得分:3)

您的CLSLogv格式似乎有误。请尝试以下类似的方法

CLSLogv("%@", getVaList([message]))

因为根据结构自定义日志doc

  

快速字符串插值不会产生编译时常量   串。就像printf和NSLog一样,使用非恒定字符串   使用CLSLog可能会导致崩溃。

答案 1 :(得分:2)

此解决方案可能有点不合常规,但是我们在App中所做的是在Objective-C中实现崩溃解析日志记录,因为我记得我们也遇到了类似的问题。

我们最终定义了一个自定义日志函数,该函数随后将使用CLSLog。好处是您不会在整个代码库中泄漏Crashlytics,因此,如果您想添加其他记录器或使用新的框架,则很安全。

为了说明这一点,我们将:

- (void)logMessage:(NSString *)message { CLSLog(@"%@", message); }

然后您可以定义一个Swift记录器,该记录器将仅使用Objective-C函数进行调用。

我们的实现依赖于可可伐木工人,因为我们有多个记录器,但您应该有所了解,并希望再次写个Objective-C很有趣

答案 2 :(得分:0)

来自Fabric的Mike。如果记录了空值或nil值,则不会显示任何日志记录。发布时您是否截断了实际记录的内容?