Crashlytics 日志记录

22

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

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

但是当仪表板崩溃时,我只能看到"This is message 1",而不能看到"This is message 2"。Crashlytics日志是否只显示第一个日志,而不显示之后的任何日志,或者我做错了什么?我该如何使用多个Crashlytics.log()命令。


1
在这里查看Julian的完整答案:https://dev59.com/JGAf5IYBdhLWcg3wu0tD - Fatima
5个回答

35

异常将保存日志消息。因此,Crashlytics.log("1"); 如果没有异常,则不会执行任何操作。

您应该这样触发:

Crashlytics.log(Log.ERROR, "YourTAG", "YourMessage");
Crashlytics.logException(new Throwable("YourERROR"));

1
我理解的与您一样。每个异常只能添加一个日志。我认为这就像一个特殊的“大”键,可以放更长的字符串。 - John
这种方法的问题在于,所有这些异常都将被归为Crashlytics控制面板下的同一异常。尽管堆栈跟踪可能会有所不同,但关键的度量指标似乎是创建异常的时间点,在这种情况下始终相同。 - Mark

3
我想向其他路人添加一条注释,即额外的日志只能按会话查看。在给定的问题中,点击“查看所有会话”按钮,您将看到有关密钥和日志的其他信息。这里显示了Fabric保存的所有日志,因此您可以在异常之前记录多次日志。我很惊讶地意识到这需要很长时间。
正如其他人已经注意到并记录的那样,如果没有通过logException记录throwable,则Crashlytics可能不会发送日志报告。如果在该屏幕上未显示日志,请记住这一点。

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");

2
在可能失败的每行代码之前等待并不是一个很好的解决方案。我已经向Crashlytics提交了错误报告:即使是他们的异步日志记录,当崩溃处理程序被调用时也没有理由不能刷新它们的缓冲区(我也遇到了同样的问题)。 - Pierre-Luc Paour
@Pierre-LucPaour:对这个问题有任何回应吗?我似乎也得到了类似的东西。 - Dennis L
Crashlytics已经意识到这个问题,但他们尚未解决它,而且不幸的是,它似乎并不是他们优先考虑的事情。如果您直接联系他们,他们会非常快速响应,并可能有助于提高优先级。 - Pierre-Luc Paour
@Pierre-LucPaour,你的错误报告是私有的吗?否则,你能分享链接吗? - desseim
这是一封私人电子邮件,发送给社区经理support@crashlytics.com - Pierre-Luc Paour
我也向support@crashlytics.com发送了一封邮件,他们告诉我:“Crashlytics Android日志是异步写入的[...]我们正在寻找改进这些异步日志写入可靠性的方法,并考虑用户可以选择使用的同步方法。” 所以他们正在解决这个问题,但目前还没有解决方案... - DSoldo

2

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

我的猜测是,在“message 2”日志行之前,您的应用程序已经崩溃了。


1
根据 Crashlytics文档的说法:
为了确保发送崩溃报告对用户设备的影响最小,Crashlytics日志的最大大小为64 KB。当日志超过64 KB时,为了保持此阈值,将删除最早记录的值。
如果第二条消息加上第一条消息超过64KB,则会丢弃您的第一条消息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接