dev*_*vha 5 android firebase crashlytics rx-java rx-java2
我的目标是:
当前设置:
subscribe()
并可以抛出Crashlytics.logException(t)
此设置的问题是 Firebase Crashlytics 将几乎所有错误归入 RxTracer 下 TracingObserver.java – line 2 - com.halfhp.rxtracer.TracingObserver.
我找不到任何方法将自定义分组等添加到 Firebase Crashlytics
你们如何向 Firebase Crashlytics 报告 RxJava 错误?
正如我在另一个答案中所说,Crashlytics 按创建根本原因异常的方法和行对问题进行分组。
CompositeException
上面链接的博客文章中提到的是一个很好的工具,可以实现两件事:让异常成为根本原因,同时保留原始异常的堆栈跟踪。
Crashlytics.logException(CompositeException(throwable, RuntimeException()))
Run Code Online (Sandbox Code Playgroud)
上面将按放置该代码片段的位置对 Crashlytics 问题进行分组,因为这RuntimeException
将是记录异常的根本原因。
像这样的函数可能会更有用:
import androidx.annotation.Keep
import com.crashlytics.android.Crashlytics
import io.reactivex.exceptions.CompositeException
class NonFatalException(message: String, cause: Throwable? = null) : RuntimeException(message, cause)
class BreadcrumbException : RuntimeException() {
override fun getStackTrace() = super.getStackTrace()
.dropWhile { it.className == "com.example.NonFatalExceptionKt" }
.toTypedArray()
}
@Keep
fun logNonFatal(message: String, throwable: Throwable) {
Crashlytics.logException(NonFatalException(message, CompositeException(throwable, BreadcrumbException())))
}
Run Code Online (Sandbox Code Playgroud)
它可以这样使用:
observable
.doOnError { logNonFatal("Someone stuck in the thermosiphon", it) }
.subscribe()
Run Code Online (Sandbox Code Playgroud)
您将获得按调用行(logNonFatal
而不是it
创建异常根本原因的行)分组的报告。
归档时间: |
|
查看次数: |
578 次 |
最近记录: |