【问题标题】:When are Crashlytics custom logs sent?何时发送 Crashlytics 自定义日志?
【发布时间】:2017-08-22 16:14:51
【问题描述】:

我有一个 BaseActivity 用作我所有活动的父项。我想将 Activity 事件(onCreate()、onStart()、onResume() 等)记录到 Crashlytics,所以当发生崩溃时,我知道用户在做什么以及当前活动的活动。我将以下代码添加到我要记录的所有方法中:

CrashlyticsCore.getInstance().log(getClass().getSimpleName() + ".onResume()");

我想知道这样做是否是个好主意。日志是否仅在发生崩溃时发送?我不会向服务器发送垃圾邮件并为用户产生不必要的网络调用吗?也许有更好的方法来使用 Crashlytics 实现面包屑?

【问题讨论】:

  • 只需在您的第一个活动的 oncreate 或您的应用程序的 oncreate 初始化 crashlytics。在这种情况下,您不需要添加自定义日志,每当您的应用程序崩溃时,crashlytics 会自动发送数据。 fabric.io/kits/android/crashlytics/install
  • 但它只发送堆栈跟踪,我希望能够通过与用户相同的屏幕来重现崩溃。有时堆栈跟踪不足以重现错误。

标签: android crashlytics crashlytics-android


【解决方案1】:

顾名思义,Crashlytics 只会在崩溃后触发报告(并发送日志),并且最多只能包含 64kb 的日志历史记录,如 docs 中所述:“为了确保发送崩溃报告对用户设备的影响最小,Crashlytics 日志的最大大小为 64 KB。当日志超过 64 KB 时,将删除最早记录的值以保持此阈值。"

如果您问我的个人意见,记录每个onCreateonResume 并不是一个好的做法或有用的信息。 Crashlytics 报告将已经包含堆栈跟踪,让您深入了解错误。

如果您已捕获异常并想要记录这些异常,您可以通过调用Crashlytics.logException(e); 来解释here。同样只存储其中的 8 个:“对于任何单个应用会话,仅存储最近记录的 8 个异常”。

【讨论】:

  • 感谢您的精彩回答。我想解释一下为什么我需要 onCreate、onResume 等。有时堆栈跟踪不足以重现错误。我想知道用户经历了哪些确切的屏幕,以及他们是否正在旋转设备。 Crashlytics 没有向我提供这些详细信息,是吗?我听说 Firebase 在此功能方面更好,但我现在无法在我的项目中替换 Crashlytics。
  • 好吧,Crashlytics 已经告诉您其中的一些,任何崩溃报告都将包含设备的方向(以及可用内存、可用磁盘空间、Android 版本、应用程序是否处于焦点...) .我没有使用过 Firebase,所以我无法评论它。您可以使用日志每个onCreate 等。正如我所说,您只能看到 64kb 的堆栈。我不确定会产生多少日志,我猜只是想尝试学习。但也许最好记录其他重要的地方,我知道这很模糊,但作为应用程序开发人员,你最清楚代码中的哪些点最适合记录。
  • 我向 Fabric 支持发送了一封包含相同问题的电子邮件。他们回答说:“好主意!日志只会与崩溃一起发送,所以你应该准备好了:)”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
相关资源
最近更新 更多