【问题标题】:How to split/ungroup Crashlytics non-fatal exceptions report using custom attribute?如何使用自定义属性拆分/取消组合 Crashlytics 非致命异常报告?
【发布时间】:2018-03-08 13:34:33
【问题描述】:

我将在与服务器同步期间收到的错误发送到 Crashlytics。这些错误主要包含有关不同数据冲突的信息。所有错误都被包装到一个异常类中,该类具有apiErrorCode 之类的字段。我不能为每个错误创建单独的异常类,因为它们有很多。因此,我使用Crashlytics.logException() 发送的所有此类异常都被分组到仪表板上的一个报告中。所以我必须去“所有会话”,在那里一一排查错误,这很不方便。此外,我无法关闭和锁定一些我不想在报告中看到的错误类型(如一些预期的服务器错误)。是否可以手动设置 Crashlytics 分组策略(在我的情况下基于 apiErrorCode)?

【问题讨论】:

    标签: android crash-reports crashlytics google-fabric crashlytics-android


    【解决方案1】:

    如果您有来自一个堆栈跟踪的不同类型的异常,您可以通过在顶部添加一个自定义元素来更改堆栈跟踪:

    public class CustomException extends Exception {
    
        public CustomException(String message, int lineNumber) {
            super(message);
            StackTraceElement[] stackTrace = getStackTrace();
            StackTraceElement[] newStackTrace = new StackTraceElement[stackTrace.length + 1];
            System.arraycopy(stackTrace, 0, newStackTrace, 1, stackTrace.length);
            newStackTrace[0] = new StackTraceElement("className", "methodName", "fileName", lineNumber);
            setStackTrace(newStackTrace);
        }
    }
    

    【讨论】:

      【解决方案2】:

      来自 Fabric 的 Mike。没有办法覆盖我们对记录的错误进行的分组。我建议对异常类型和消息进行具体说明,而不是使用单个异常类,尽管这确实会带来代码复杂性增加的权衡。

      【讨论】:

      • 感谢您的回答。将尝试使用自定义异常类型做一些事情,尽管这非常困难,因为大约有 120 个错误代码,我们的应用程序不必处理其中的大部分,而只是显示从服务器接收到的异常消息。每个 API 响应的异常消息都不同。但正如我所见,Crashlytics 没有考虑到这一点。这会很好。实际上,自定义分组本身也是一个不错的功能请求:)
      • 感谢您的详细信息和反馈!我们没有立即添加自定义分组的计划,但会与团队分享您对此的渴望。
      • 在一个 Android 项目中,我使用 Timber 和 Timber.e,然后让 TimberTree 的发布版本执行 override fun log(priority: Int...) { if (priority == ERROR) Crashlytics.logException(t ?: Exception(message)) }。那么问题是所有日志都集中在一起。如果你能做一些事情,比如让 fabric 忽略日志跟踪的某些部分,比如 timber.log.Timbercom.my.app.TimberTree 来拆分非致命的,那就太好了。
      猜你喜欢
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多