【发布时间】: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 个字符,以防长度问题。
标签: android twitter-fabric crashlytics-android