Flutter Crashlytics日志捕获异常

问题描述 投票:6回答:1

正在寻找一些关于如何使用flutter的firebase_crashlytics包来记录捕获的异常的说明。

如果我理解正确(并且从运行示例代码的角度来看,Crashlytics.instance.log('text');只会将日志添加到下一个崩溃报告中,而不是发送非致命性的问题本身。

例如,我正在寻找与Android上的Crashlytics.logException(e)等效的功能

try {
  throwException();
} catch (e) {
  Crashlytics.logExcpetion(e);
}

允许您记录捕获的异常,使它们在Crashlytics仪表板中显示为非致命问题。

目前可以通过flutter的firebase_crashlytics包实现吗?

现在是通过电话Crashlytics.instance.recordError('text', StackTrace.current)实现这一目标吗?

非常感谢!

firebase flutter crashlytics
1个回答
2
投票

答案简短,是。

[Crashlytics.instance.recordError()等于Crashlytics.logExcpetion()] >>

如果深入研究Flutter firebase_crashlytics源代码,您实际上可以看到涉及到的Android API。

Flutter的recordError()调用Android库中的方法Crashlytics#onError

并跟踪Crashlytics#onError,您会看到它转到Crashlytics.logException(exception);

附加说明,您还会注意到为什么Crashlytics.instance.log() “只会将日志添加到下一个崩溃报告中。]

。这些日志添加到ListQueue<String> _logs,然后打包到recordError()的下一个调用中

Flutter的invocation of Crashlytics.logExcpetion()摘录:

_recordError(...) {
     ...
     final String result = await channel
          .invokeMethod<String>('Crashlytics#onError', <String, dynamic>{
        'exception': "${exception.toString()}",
        'context': '$context',
        'information': _information,
        'stackTraceElements': stackTraceElements,
        'logs': _logs.toList(),
        'keys': _prepareKeys(),
      });
}

和一些参考文献notes for Crashlytics.logExcpetion()

为了减少用户的网络流量,Crashlytics记录了批次异常一起发送,并在下次应用启动时将其发送。

对于任何单个应用程序会话,仅记录最近的8个异常被存储。

© www.soinside.com 2019 - 2024. All rights reserved.