Проблема с записью моих данных с помощью аварийных сообщений

Я пытаюсь получить журналы с некоторыми данными службы с 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); 

Я пытался генерировать исключение в своем приложении и обрабатывать его, но не имеет никаких результатов:

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

Также я читал в журнале Crashlytics, который не был отправлен. Мне нужно инициализировать crashlytics перед данными журнала. Я поместил Crashlytics.start (this) в onStart () событие моей деятельности, но больше не видел мои журналы на панели инструментов. Наконец, я попытался поставить Crashlitycs.start (это) непосредственно перед тем, как регистрировать свои данные, но все еще не имеет журналов на панели управления.

Plase, скажите мне, что я делаю неправильно, и как получить свои собственные журналы в панели мониторинга Crashlytics?

Solutions Collecting From Web of "Проблема с записью моих данных с помощью аварийных сообщений"

У меня была аналогичная ситуация. С некоторыми экспериментами я смог вывести правила поведения Crashlytics.

Я делюсь своими знаниями здесь, поэтому (надеюсь) другим не нужно проходить сложный и трудоемкий процесс, который я сделал, чтобы понять это.

Crashlytics будет сразу загружать отчет о сбоях «на приборную панель», если произойдет фатальное исключение. Другими словами, когда ваше приложение выходит из строя. И ничто не отображается на панели управления, пока и до тех пор, пока не будет загружен отчет о сбое.

Если вы регистрируете нефатальное исключение, используя CrashLytics.logException(e) , отчет о 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() .

Чтобы убедиться, что он работает, выполните код, а затем перезапустите приложение. В информационной панели вы должны увидеть журналы, связанные с проблемой, созданной для исключения, не связанного с фатацией. В дикой природе вам просто нужно доверять своим пользователям перезапуск приложения с некоторой регулярностью.

Согласно базе знаний Crashlytics:

Зарегистрированные сообщения связаны с вашими данными о сбоях и отображаются на панели мониторинга Crashlytics, если вы посмотрите на конкретную аварию.

И по моему опыту это кажется правдой. Однако я не уверен, что определяет, какое ведение журнала связано с сообщением о сбоях. Возможно, временное окно (время крушения) или ограниченное количество журналов (перед сбоем) связано с сообщением о сбое?

Однако база знаний Crashlytics говорит, что исключения могут регистрироваться:

Все зарегистрированные исключения будут отображаться как «нефатальные» проблемы на панели мониторинга Crashlytics.

Поэтому, если вы изменили свой try / catch на:

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

То он должен появиться на панели мониторинга Crashlytics.

Вместо того, чтобы ловить исключение и регистрировать его, вместо этого вы можете использовать RuntimeExceptions:

throw new RuntimeException("Test crash");

Android Studio не потребует, чтобы вы их поймали, поэтому приложение прекратило и сразу же отправило отчет.