[就像我在another answer中所说的那样,Crashlytics正在按创建根本原因异常的方法和行将问题分组。
我的目标是:
当前设置:
subscribe()
并抛出该异常Crashlytics.logException(t)
将可抛出的日志记录到Firebase Crashlytics中>使用此设置的问题是Firebase Crashlytics将RxTracer TracingObserver.java – line 2 - com.halfhp.rxtracer.TracingObserver.
下的几乎所有错误归为一组>
我找不到将自定义分组has等添加到Firebase Crashlytics的任何方法
你们如何向Firebase Crashlytics报告RxJava错误?
[我的目标是:将RxJava链处理的错误记录到Firebase Crashlytics中。获取一些合理的堆栈跟踪信息(这也指向我的代码)使Firebase Crashlytics错误分组正确(并非全部...
)>[就像我在another answer中所说的那样,Crashlytics正在按创建根本原因异常的方法和行将问题分组。
上面链接的博客文章中提到的[CompositeException
是实现两个目标的好工具:让您的异常成为根本原因,同时保留原始异常的堆栈跟踪。]]
Crashlytics.logException(CompositeException(throwable, RuntimeException()))
上面的代码将Crashlytics问题按您放置该代码片段的位置进行分组,因为
RuntimeException
将是记录的异常的根本原因。
这样的功能可能会更有用:
import com.crashlytics.android.Crashlytics import io.reactivex.exceptions.CompositeException class NonFatalException(message: String) : RuntimeException(message) @Suppress("NOTHING_TO_INLINE") inline fun logNonFatal(message: String, throwable: Throwable) { Crashlytics.logException(CompositeException(throwable, NonFatalException(message))) }
可以这样使用:
observable .doOnError { logNonFatal("Someone stuck in the thermosiphon", it) } .subscribe()
您将得到按
logNonFatal
调用的行分组的报告,而不是根据it
异常的根本原因创建的行。制作函数
inline
很重要,否则,只有一个问题指向logNonFatal
的实现,它将所有记录的非致命事件分组。
内联函数的堆栈跟踪似乎指向调用logNonFatal
的文件末尾的一行,但是您可以通过在IDE中使用Analyze Stack Trace...
获得实际的调用位置。
[就像我在another answer中所说的那样,Crashlytics正在按创建根本原因异常的方法和行将问题分组。