使用crashlytics记录我的数据时出现问题

ibo*_*kiy 29 logging android crashlytics

我正在尝试使用Crashlytics在我的Android应用程序中获取带有一些服务数据的日志.但我没有在仪表板中看到我的日志.我用过这个:

String myLog = getServiceData(); //myLog is not null and non-empty
CrashLytics.log(myLog);
Run Code Online (Sandbox Code Playgroud)

还有这个:

String myLog = getServiceData(); //myLog is not null and non-empty
CrashLytics.log(Log.Error, getString(R.string.app_name), myLog);
Run Code Online (Sandbox Code Playgroud)

我试图在我的应用程序中生成异常并处理它,但没有结果:

try {
   int a = 0;
   a = 1/a;
}
catch (Exception e) {
   CrashLytics.log(myLog);
}
Run Code Online (Sandbox Code Playgroud)

另外我读了Crashlytics日志未发送我需要在日志数据之前初始化crashlytics.我把Crashlytics.start(this)放在我的Activity的onStart()事件中,但没有再次在仪表板中看到我的日志.最后我尝试在记录数据之前直接放置Crashlitycs.start(this),但仪表板中仍然没有日志.

Plase,告诉我我做错了什么以及如何在Crashlytics仪表板中获取我的自定义日志?

Jul*_* A. 62

我有类似的情况.通过一些实验,我能够推断出Crashlytics行为的规则.

我在这里分享我的学习,所以(希望)其他人不必经历我所做的艰苦而耗时的过程.

如果发生致命异常,Crashlytics将立即将崩溃报告"立即上传到仪表板".换句话说,当您的应用程序崩溃时.除非上载崩溃报告,否则仪表板中不会显示任何内容.

如果您使用登录非致命异常,CrashLytics.logException(e)则在下次重新启动应用程序之前,不会上载崩溃报告.因此,在应用程序重新启动之前,您不会在Crashlytics仪表板中看到异常.

你可以知道上传的时间,因为你会在LogCat中看到这种消息:

07-17 19:30:41.477 18815-18906/com.foo.bar I/Crashlytics? Crashlytics report upload complete: 55A9BA0C01D7-0001-462D-B8B4C49333333.cls

Crashlytics日志消息必须与致命或非致命异常相关联才能显示在仪表板中.

此外,日志未与异常关联的消息生存的应用程序重新启动.

因此,如果您执行某些操作,例如记录一些消息,然后重新启动应用程序,然后应用程序抛出异常,或者使用记录非致命异常Crashlytics.logException(),则日志消息将丢失.它们不会显示在仪表板中.

如果要在没有致命异常的情况下记录某些消息,请使用一个或多个Crashlytics.log()语句,然后使用Crashlytics.logException().

要验证它是否有效,请运行代码,然后重新启动应用程序.在仪表板中,您应该看到与为非致命异常创建的问题相关联的日志.在野外,你只需要相信你的用户有规律地重启应用程序.

在Fabric/Crashlytics仪表板上,您需要选择All Events或(如果您只想查看日志记录调用)Non-Fatals.

在此输入图像描述

  • 信任用户?决不! (6认同)
  • 如果我调用Crashlytics.logException().应用程序重新启动后,我可以在Dashboard上看到此日志.但另一个这样的日志Crashlytics.log(android.util.Log.INFO,tag,msg),Crashlytics.log(android.util.Log.ERROR,tag,msg),Crashlytics.log(android.util.Log.DEBUG,标记,msg)在仪表板上没有出现Crashlytics.logException()之前和之后被调用.请帮我如何让他们在仪表板上显示.我们如何记录与致命或非致命异常相关联的Crashlytics日志消息?谢谢 (3认同)
  • 这需要打印出来并放在墙上! (3认同)
  • 你先生!是一个传奇! (2认同)

小智 5

根据Crashlytics知识库:

记录的消息与您的崩溃数据相关联,如果您查看特定的崩溃本身,则会在Crashlytics仪表板中显示.

根据我的经验,这似乎是真的.但是我不确定是什么决定了哪个日志记录与崩溃报告相关联.也许时间窗口(崩溃时间)或有限数量的日志(崩溃前)与崩溃报告相关联?

但是,Crashlytics知识库确实说可以记录异常:

所有记录的异常将在Crashlytics仪表板中显示为"非致命"问题.

因此,如果您将try/catch更改为:

try {
   int a = 0;
   a = 1/a;
}
catch (Exception e) {
   CrashLytics.logException(e);
}
Run Code Online (Sandbox Code Playgroud)

然后它应该出现在Crashlytics仪表板中.