Получение звонков в журнал? например, Log.w() Log.e() Log.i()
Для приложения, которое я разрабатываю, я хочу упростить поиск и устранение неисправностей, как в процессе разработки, так и после выпуска. Я хочу иметь возможность получать звонки на Log
когда приложение запускается без телефона, подключенного в режиме отладки через USB, его можно получить и отправить мне. Например, когда приложение вылетает или когда Log.e(...)
называется, журнал истории (звонки в Log.i()
, Log.w()
) может быть отправлен на сервер, или пользователь может отправить его мне вручную.
Как это можно сделать?
Кроме того, должна ли техника меняться в зависимости от того, находится ли приложение в разработке или выпуске? (Знаю с андроида Log
документы, которые Log.v(...)
не следует компилировать в версии выпуска - есть ли лучший способ, чем закомментировать все эти вызовы?)
Возможно, имеет смысл продлить Log
или накатить свое, но дьявол кроется в деталях.
2 ответа
Для извлечения журналов сбоев есть библиотека ACRA. Acra отправит отчеты о сбоях на ваш сервер. Кроме того, в Google Play также имеется вкладка сбоев и ANR в консоли разработчика, где хранятся отправленные пользователем отчеты о сбоях. Отчет о сбое консоли Google Play очень прост в использовании и предоставляет дополнительную информацию о количестве таких же сбоев и версии приложения, в котором произошел сбой.
В моем приложении я создал класс LogWrapper, который, как и следовало ожидать, оборачивает вызовы журнала. Внутри каждого метода я проверяю BuildCondig.DEBUG
флаг, чтобы определить, нахожусь ли я в режиме отладки или выпуска.
Кроме того, мой LogWrapper проверяет, какой метод совершал вызов, и добавляет его в meassge, обычно он недоступен при использовании класса Log напрямую.
Если приложение находится в режиме отладки, я передаю вызовы журнала в класс Log, в противном случае я передаю вызовы журнала сторонней библиотеке, Crashlytics в моем случае. Существует больше инструментов аварийного завершения, например, Hockeyapp также рекомендуется для платформы.