Когда отправляются пользовательские журналы Crashlytics?

У меня есть BaseActivity, который я использую как родительский для всех своих действий. Я хотел бы регистрировать события Activity (onCreate (), onStart (), onResume () и т. Д.) В Crashlytics, чтобы при сбое я знал, что делал пользователь и какие действия были активны в данный момент. Я добавил следующий код ко всем методам, которые хочу регистрировать:

CrashlyticsCore.getInstance().log(getClass().getSimpleName() + ".onResume()");

Мне интересно, стоит ли это сделать. Журналы отправляются только при сбое? Не буду ли я спамить сервер и совершать ненужные сетевые вызовы для пользователей? Может быть, есть лучший способ реализовать хлебные крошки с помощью Crashlytics?


person Bartek    schedule 29.03.2017    source источник
comment
Просто инициализируйте crashlytics при oncreate вашего первого действия или oncreate вашего приложения. В этом случае вам не нужно добавлять пользовательские журналы, когда ваше приложение вылетает из строя, crashlytics автоматически отправляет данные. fabric.io/kits/android/crashlytics/install   -  person Arun Shankar    schedule 29.03.2017
comment
Но он отправляет только трассировку стека, и я хочу иметь возможность воспроизвести сбой, просматривая те же экраны, что и пользователь. Иногда трассировки стека недостаточно для воспроизведения ошибки.   -  person Bartek    schedule 29.03.2017


Ответы (1)


Как следует из названия, Crashlytics будет запускать отчет (и отправлять журнал) только после сбоя и будет содержать только до 64 КБ истории журналов, как указано в docs:" Чтобы обеспечить наименьшее влияние отправки отчетов о сбоях на устройства ваших пользователей, журналы Crashlytics имеют максимальный размер 64 КБ. Когда размер журнала превышает 64 КБ, самые ранние зарегистрированные значения будут отброшены, чтобы поддерживать этот порог ».

Если вы спросите мое личное мнение, не рекомендуется регистрировать каждый onCreate, onResume. Отчет Crashlytics уже будет содержать трассировку стека, дающую вам представление об ошибке.

Если вы обнаружили исключения и хотите их регистрировать, вы можете сделать это, объяснив здесь, позвонив Crashlytics.logException(e);. Снова будут сохранены только 8 из них: «Для любого отдельного сеанса приложения сохраняются только 8 последних зарегистрированных исключений».

person Mehmet K    schedule 29.03.2017
comment
Спасибо за отличный ответ. Я хочу объяснить, почему мне нужны onCreate, onResume и т. Д. Иногда трассировки стека недостаточно для воспроизведения ошибки. Я хотел бы знать, через какие именно экраны проходил пользователь и вращали ли они устройство. Crashlytics не предоставляет мне эти подробности, не так ли? Я слышал, что Firebase лучше, когда дело доходит до этой функции, но сейчас я не могу заменить Crashlytics в своем проекте. - person Bartek; 29.03.2017
comment
Что ж, Crashlytics уже сообщает вам некоторые из них, любой отчет о сбоях будет содержать ориентацию устройства (и свободную память, свободное место на диске, версию Android, находится ли приложение в фокусе ...). Я не использовал Firebase, поэтому не могу его комментировать. Вы можете просто использовать журнал каждые onCreate и т. Д. Как я уже сказал, вы сможете увидеть стек размером только 64 КБ. Я не уверен, сколько журналов получается, просто нужно попробовать и выучить, я думаю. Но, возможно, лучше регистрировать другие важные места, я знаю, что это получается расплывчато, но вы, как разработчик приложения, лучше знаете, какие моменты кода лучше всего регистрировать. - person Mehmet K; 29.03.2017
comment
Я отправил электронное письмо с тем же вопросом в службу поддержки Fabric. Они ответили: Отличная идея! Журналы отправляются только при сбое, так что все должно быть готово :) - person Bartek; 06.04.2017