22

我正在使用多个Crashlytics.log()命令,例如:

Crashlytics.log("This is message 1");
Crashlytics.log("This is message 2"); 

但是当仪表板发生崩溃时,我只能看到“这是消息 1”而不是“这是消息 2”。Crashlytics 日志是否仅显示第一个日志而不显示之后的任何后续日志,还是我做错了什么?如何使用多个Crashlytics.log()命令。

4

5 回答 5

35

日志消息将保存异常。所以Crashlytics.log("1");不会毫无例外地做任何事情。

你应该这样开火:

Crashlytics.log(Log.ERROR, "YourTAG", "YourMessage");
Crashlytics.logException(new Throwable("YourERROR"));
于 2015-10-27T11:06:52.543 回答
2

似乎 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");
于 2014-09-01T15:39:35.653 回答
2

我正在使用 Crashlytics 日志系统,我可以看到更多的日志。事实上,我可以看到在崩溃点之前添加到应用程序中的所有日志。

我的猜测是您的应用程序在您的“消息 2”日志行之前发生了崩溃。

于 2014-03-19T17:37:15.813 回答
2

我想向其他路人添加一条注释,额外的日志只能在每个会话的基础上查看。在给定的问题中,单击View All Sessions按钮,您将看到密钥和日志的其他信息。Fabric 持有的所有日志都显示在此处,因此您可以在异常发生之前多次记录。我花了很长时间才意识到这一点。

正如其他人已经注意到并记录在案的那样,Crashlytics 可能不会发送日志报告,直到通过logException. 如果日志没有出现在该屏幕上,请记住这一点。

于 2017-08-10T02:30:49.017 回答
0

根据Crashlytics 文档

为确保发送崩溃报告对用户设备的影响最小,Crashlytics 日志的最大大小为 64 KB。当日志超过 64 KB 时,将删除最早记录的值以保持此阈值。

如果第二条消息加上第一条消息超过 64KB,您的第一条消息将被丢弃。

于 2019-06-01T17:56:45.013 回答