在Crashlytics上记录非致命错误日志

44
在iOS中,可以使用recordError(error)来记录Crashlytics上的非致命性错误,但似乎Android没有提供此功能。唯一的替代方法是使用logException(e)。我正在管理应用程序中的错误,并希望在特定的错误代码返回时进行记录。因此,在Crashlytics中,我希望将非致命性错误引用为errorCode。但是使用logException(e)方法会导致错误被引用到调用logException(e)的方法中。请问如何解决?

1
你可以在这里检查我的答案 https://dev59.com/v10b5IYBdhLWcg3wA9PJ#45071033。希望它有所帮助。 - Linh
1
有很多详细的回答并且得到了赞,但是实际上没有一个回答了这个问题... - Jolt151
4个回答

49

为了报告一个非致命问题,我通常会使用以下代码记录异常(请记住可以抛出Exception的任何子类),具体步骤请参考log an exception

Crashlytics.logException(new Exception("我的自定义错误信息"));


7
然而,与iOS的 recordError 不同,这不会在应用程序重新启动之前上传报告。 - DarkNeuron
1
@DarkNeuron 有解决办法吗?我想立即记录异常。 - ysfcyln
目前我不知道有的 :( @ysfcyln - DarkNeuron
1
recordError 也需要等待下一次应用程序启动。根据 https://firebase.google.com/docs/crashlytics/customize-crash-reports?platform=ios#log-excepts 的说明,“Crashlytics 允许您记录非致命异常并在下一次应用程序启动时将其发送给您。” - Herman J. Radtke III

22

对于已经迁移从Fabric-Crashlytics SDK到Firebase-Crashlytics SDK的用户,记录非关键异常或在try-catch块中捕获的异常的新方法是这样的 -

FirebaseCrashlytics.getInstance().recordException(e)

为了在崩溃报告中添加额外的数据字段,您可以在记录异常之前添加键值对,如下所示:
val crashlytics = FirebaseCrashlytics.getInstance()
crashlytics.setCustomKey("position", 1)
crashlytics.setCustomKey("marker_mode", "hidden")
crashlytics.setCustomKey("direction_shown", true)

为了添加一些日志消息,

FirebaseCrashlytics.getInstance().log("Reached breakpoint 2")

18

您还可以使用Crashlytics的以下功能来提供更多信息。

记录非致命事件:

try {
  myMethodThatThrows();
} catch (Exception e) {
  Crashlytics.logException(e);
  // handle your exception here!
}

添加更多消息:

Crashlytics.log(int priority, String tag, String msg);
Crashlytics.log("Higgs-Boson detected! Bailing out...");

您也可以提供一些用户信息:

void Crashlytics.setUserIdentifier(String identifier);
void Crashlytics.setUserName(String name);
void Crashlytics.setUserEmail(String email);

10
Crashlytics.log("msg") 只能作为可能未来异常的附加补充,否则开发者将无法在 Crashlytics 仪表板上找到它。 - ultraon
如果这来自 'io.fabric',它已被弃用,请不要使用它。请改用 Firebase Crashlytics。 - VoidMain

2
根据最新版本的Crashlytics 2.9.2.. 您可以通过此代码记录非致命异常
Firebase.crashlytics.recordException(e)

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