Fabric Crashlytics for android - 如何在 stackTrace 区域中包含附加信息

Posted

技术标签:

【中文标题】Fabric Crashlytics for android - 如何在 stackTrace 区域中包含附加信息【英文标题】:Fabric Crashlytics for android - how to include additional info in stackTrace area 【发布时间】:2016-12-22 04:04:17 【问题描述】:

我想在 crashlytics 异常记录期间额外发送一个对象转储。因此,例如,假设发生了一个 nullPointerException。我想另外添加一个大对象,这将是我的模型,并将其包含在 crashlytics 的堆栈跟踪区域中。这样,当我看到堆栈跟踪时,我还可以从转储中查看模型信息。除了通常的 crashlytics 日志之外,我如何发送这些信息?这是我目前所拥有的:

        try
    //....
throw new NullPointerException("my cool msg");

    
          catch(Exception e)      
               Crashlytics.setInt("priority", 4);
                Crashlytics.setString("tag", "mytag");
                Crashlytics.setString("message", Model.toString());   
                Crashlytics.logException(e);         
     

现在发生的是什么都没有出现。但是如果我注释掉“消息”的 setString,那么我会得到一个带有消息“我的酷消息”的堆栈跟踪。

更新:我什至尝试过 Crashlytics.log(Model.toString());但这在 crashlytics 上没有显示任何内容。我正在 onCreate 中的 Application 子类中设置 crashlytics,如下所示:Fabric.with(this, new Crashlytics());

从 cashlytics 文档中我发现了这个:

为确保发送崩溃报告对用户设备的影响最小,Crashlytics 日志的最大大小为 64 KB。当日志超过 64 KB 时,将删除最早记录的值以保持此阈值。

这可能是我的问题。现在检查我的尺码...

调整有效负载的大小不起作用。我制作了有效载荷 9 个字符,但它仍然没有出现。

更新:

让我们重新开始,但更简单。为什么以下内容对我不起作用?

try
//....
throw new NullPointerException("my cool msg");


   catch(Exception e)      
        Crashlytics.setInt("priority", 4);
         Crashlytics.setString("tag", "mytag");
         Crashlytics.setString("message", "");   
         Crashlytics.logException(e);         

这里发生的确实是在crasylytics仪表板中出现了一个堆栈跟踪,上面写着“我的酷消息”,但没有任何关于优先级、标签或消息的内容。只有堆栈跟踪出现。应该在那里 那里没有带有这些标题之类的条目吗?

【问题讨论】:

不确定,但如果您的模型为空,那么除了 NULL 之外应该有什么消息?另外,试试这种方式 Crashlytics.log(Model.toString());如果它包含任何数据。 我确认它有数据。我将其打印在敬酒消息中。 你试过第二种方法了吗? 是的,它不起作用。我更新了我的回复。我也尝试了以下方法,但没有任何内容发送到 crashlytics。似乎只有在我不发送对象时才有效。 Crashlytics.setInt("优先级", 4); Crashlytics.setString("tag", "tag_welcomeLogin"); //Crashlytics.setString("message", e.getMessage() + schemaStr); Crashlytics.log(schemaStr.substring(1,90)); Crashlytics.logException(e);请注意,我什至将对象设置为 90 个字符,以防长度问题。 【参考方案1】:

点击绿色的“查看所有会话”按钮后,我可以看到自定义信息。他们本可以让它更明显。

从docs 看来,非致命异常似乎被批处理并在下次应用启动时发送:

Crashlytics 在专用后台线程上处理异常,因此对您的应用的性能影响很小。为了减少您的用户的网络流量,Crashlytics 将记录的异常批处理在一起,并在应用下次启动时发送。

【讨论】:

以上是关于Fabric Crashlytics for android - 如何在 stackTrace 区域中包含附加信息的主要内容,如果未能解决你的问题,请参考以下文章

iOS:'[Fabric] 似乎“Crashlytics”不是有效的 Fabric Kit [重复]

如何安装 Fabric 和 Crashlytics

如何在 iOS 中使用 Crashlytics 而不使用 Fabric

处理 Fabric/Crashlytics 中的错误分组

从 Fabric 切换到 Firebase Crashlytics 问题:缺少 Crashlytics 构建 ID

找不到插件 Fabric Android Studio 导入 com.crashlytics & io.fabric