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

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

String myLog = getServiceData(); //myLog is not null and non-empty CrashLytics.log(myLog); 

和这个:

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

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

 try { int a = 0; a = 1/a; } catch (Exception e) { CrashLytics.log(myLog); } 

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

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

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

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

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

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

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

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

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

    此外,与应用程序重新启动无关的日志消息不会与exception关联。

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

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

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

    根据Crashlytics知识库:

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

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

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

    所有记录的exception将在Crashlytics仪表板中显示为“非致命”问题。

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

     try { int a = 0; a = 1/a; } catch (Exception e) { CrashLytics.logException(e); } 

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

    您可以改为使用RuntimeExceptions,而不是捕获exception并记录它。

    throw new RuntimeException("Test crash");

    Android Studio不会要求您捕获这些内容,因此让应用程序终止并立即上传报告。