我有一个应用程序将其崩溃记录到Fabric的Crashlytics平台。
崩溃日志按预期方式工作,因为可以通过平台的仪表板对其进行观察。但是,对命令CLSLog
的调用似乎无法正常工作。崩溃的会话的日志面板未显示正确的日志输出。
这是我们在应用程序中使用CLSLog
的方式:
CLSLogv(message, getVaList([""]))
有人可以指出这个问题的可能原因吗?
答案 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值,则不会显示任何日志记录。发布时您是否截断了实际记录的内容?