我正在使用多个Crashlytics.log()
命令,例如:
Crashlytics.log("This is message 1");
Crashlytics.log("This is message 2");
但是当仪表板发生崩溃时,我只能看到“这是消息 1”而不是“这是消息 2”。Crashlytics 日志是否仅显示第一个日志而不显示之后的任何后续日志,还是我做错了什么?如何使用多个Crashlytics.log()
命令。
我正在使用多个Crashlytics.log()
命令,例如:
Crashlytics.log("This is message 1");
Crashlytics.log("This is message 2");
但是当仪表板发生崩溃时,我只能看到“这是消息 1”而不是“这是消息 2”。Crashlytics 日志是否仅显示第一个日志而不显示之后的任何后续日志,还是我做错了什么?如何使用多个Crashlytics.log()
命令。
日志消息将保存异常。所以Crashlytics.log("1");
不会毫无例外地做任何事情。
你应该这样开火:
Crashlytics.log(Log.ERROR, "YourTAG", "YourMessage");
Crashlytics.logException(new Throwable("YourERROR"));
似乎 Crashlytics 正在异步写入日志消息。因此,在使用 Crashlytics.log() 时,您总是会遇到竞态条件。
根据您在崩溃前做短暂(且丑陋)的睡眠可能会解决此问题:
Crashlytics.log("1");
Crashlytics.log("2");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// NOP: Ignored!
}
throw new RuntimeException("Failed directly after logging.");
或者您可以改用自定义键:
Crashlytics.setString("SOME_IMPORTANT_VALUE", "1");
我正在使用 Crashlytics 日志系统,我可以看到更多的日志。事实上,我可以看到在崩溃点之前添加到应用程序中的所有日志。
我的猜测是您的应用程序在您的“消息 2”日志行之前发生了崩溃。
我想向其他路人添加一条注释,额外的日志只能在每个会话的基础上查看。在给定的问题中,单击View All Sessions
按钮,您将看到密钥和日志的其他信息。Fabric 持有的所有日志都显示在此处,因此您可以在异常发生之前多次记录。我花了很长时间才意识到这一点。
正如其他人已经注意到并记录在案的那样,Crashlytics 可能不会发送日志报告,直到通过logException
. 如果日志没有出现在该屏幕上,请记住这一点。
为确保发送崩溃报告对用户设备的影响最小,Crashlytics 日志的最大大小为 64 KB。当日志超过 64 KB 时,将删除最早记录的值以保持此阈值。
如果第二条消息加上第一条消息超过 64KB,您的第一条消息将被丢弃。