Как собрать логи приложения с андройда в Android Studio. Реальный пример. Logs, logcat, mobile app
Рад снова видеть Вас на канале! 8 урок- на котором мы соберем проект в Android Studio и снимим логи приложения несколькими способами! Lesson 8 — where we will build a project in Android Studio and remove application logs in several ways! https://github.com/square/android-times-square
Вы узнаете как собрать логи с android устройства с помощью logcat:
1 Соберем проект в Android Studio
2 Снимем логи через Logcat утилиту
3 Рассмотрим способы для снятия логов через терминал
3:14 Подготовка окружения (environment)
6:59 Билдим проект и рассматриваем интерфейс locat
10:19 Снимаем логи с помощью Logcat утилиты
11:53 Снимаем логи с помощью командной строки / terminal
19:12 Способ сбора логов через аналитическую базу
Как снимать логи с устройств на Android и iOS: разбираемся с инструментами

Краткая инструкция по чтению и разбору логов мобильных устройств на Android и iOS, а также необходимые инструменты для Windows и MacOS.
Статья подготовлена red_mad_robot и «Альфа-Банком» на основе доклада Senior QA red_mad_robot Ольги Никитиной «Инструменты для снятия логов с Android / iOS устройств. Чтение и разбор» на митапе «QАчественное общение» при поддержке red_mad_robot.
Уровни логирования и что они означают
Для начала разберёмся с логами. Это текстовые файлы, в которых записываются все действия пользователя. Например, какие кнопки он нажимает в приложении и как на это оно реагирует в ответ.
Записи в логах формируются в хронологическом порядке. Самая свежая — внизу.
Есть два вида логов:
- Crash logs — файл, в котором хранятся записи только об ошибках экстренного завершения программы — по-простому, когда приложение крашнулось.
- Logs — простые логи, или журнал событий. Это файл, в котором хранятся системные записи и ответы устройства на действие пользователя.
Логи на мобильных устройствах бывают нескольких уровней:
Они представлены по уровню важности — от самого высокого к самому низкому, — и каждый следующий уровень включает в себя предыдущий. Например, VERBOSE содержит в себе логи всех остальных.
Примечание: уровни более применимы к логам на Android, потому что именно там такое разделение встречается чаще.
Рассмотрим подробнее каждый уровень.
Error (ERROR)
На этом уровне информируются ошибки работы системы.
Записи этого уровня требуют быстрого вмешательства разработчика — на такие ошибки нужно реагировать максимально быстро.
Как пример, такая запись в логе:
“ SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length ”
Это ошибка, в которой говорится, что строковый элемент span не может быть пустым.
“ [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008] ] ”
Эта системная ошибка сообщает, что происходит утечка памяти при взаимодействии с каким-то элементом или приложением.
Warning (WARN)
На этом уровне отображаются записи, сообщающие о каком-то неожиданном поведении, требующем внимания, или о ситуации, которая незнакома системе.
Например, сообщение ниже — запись из тестового приложения:
“ [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 16 failed: -2147483648 “
Мы пытаемся декодировать запись в какой-то формат, но его нет. Ошибка сообщает о неуспешной попытке настройки видеоплеера в нужном формате.
“ BroadcastQueue: Permission Denial: broadcasting Intent ”
Эта системная ошибка говорит о сбое в работе одного из виджетов на устройстве.
Info (INFO)
На этот уровень приходят записи информационного характера, например о работе системы.
Допустим, такое сообщение об уровне заряда батареи на устройстве:
“ APwBatteryMonitor: screen off start battery: 100 ”
А это сообщение говорит о том, что экран устройства был выключен:
Ещё в логи этого уровня входят запросы от клиента на сервер: хедеры, тело запросов, которые отправляет клиент, и ответы сервера.
okhttp.OkHttpClient: server: nginx/1.15.9
okhttp.OkHttpClient: date: Thu, 23 Sep 2021 19:41:17 GMT
okhttp.OkHttpClient: content-type: application/json
okhttp.OkHttpClient: vary: Accept-Encoding
okhttp.OkHttpClient: strict-transport-security: max-age=15724800; includeSubDomains
Такие записи могут помочь вам в понимании какого-то бага или в разборе задачи при условии, что вы не можете перехватить трафик или не знаете, какие запросы отправляются на бэкенд.
Debug (DEBUG)
Это уровень сообщений, в которых передаётся информация о процессах отладки или шагах работы крупных процессов.
Например, в записи ниже сказано, что пользователь нажимал на кнопку уменьшения или увеличения громкости:
Сначала мы видим запись о самом факте нажатия на кнопку, далее оно расшифровывается подробнее:
Ещё пример: если ваше приложение использует сокет-сессию, то на уровне DEBUG мы можем увидеть, когда сессия начинается и заканчивается:
“ b$b: WebSocket connected ”
Verbose (VERBOSE)
Сообщения такого уровня уточняют или раскрывают действия.
Например, у нас есть служба управления окнами на экране приложения. И на уровне Verbose мы можем увидеть подробности её работы.
WindowManager: Removing Window
На этом уровне мы можем посмотреть системные подробности наших действий. Например, при включении геолокации в записи отобразится текущая геолокация.
GnssLocationProvider: reportLocation Location [. ]
А меняя звук на устройстве, мы увидим, как растёт или падает значение:
AudioManager: getStreamVolume streamType: 3 volume: 10
Каждое нажатие, то есть изменение звука, будет отражаться новым сообщением.
Verbose — уровень самого низкого приоритета. Выбирая такой уровень отображения логов, мы будем видеть записи и со всех предыдущих уровней.
Примечание: разработчики приложения самостоятельно покрывают действия логами, определяют уровни, а также какие сообщения какому из них соответствуют.
Инструменты для снятия логов: Android
Расскажем о трёх способах.
Первый — Logcat в составе Android Studio, самый известный и широко используемый.
Для снятия логов нам необходимо перевести устройство в режим разработчика/отладки. Для этого нужно:
- найти в настройках номер нашего билда или ОС (в зависимости от устройства),
- около десяти раз нажать на эту информацию,
- при появлении сообщения о том, не хотим ли мы перевести устройство в режим разработчика, нажать «Ок».
Примечание: алгоритм может отличаться в зависимости от производителя устройства, потому что у многих из них свои надстройки на ОС Android.
Дальше подключаем устройство по USB к ПК и устанавливаем Android Studio.
Следующие шаги на скрине:

- Выбираем вкладку Logcat (переходим к сообщениям в реальном времени).
- В окошке выбираем телефон, с которого снимаем логи.
- На этой вкладке выбираем логи определённого приложения. Если нужно снять вообще все логи со всех приложений и системы, эту вкладку стоит не трогать. Рядом с ней можно выбрать уровень логирования (вкладка Verbose на скрине).
- В поле поиска, где мы можем фильтровать выдачу, разрешено писать что угодно — от названия пакета до частей вроде fatal.
На скрине видно логи с подключенного устройства.

Второй способ — выгрузка логов с самого устройства. Кроме режима разработчика нам нужно подключить устройство к ПК через USB и установить ADB — Android Debug Bridge.
Открываем терминал и пишем две команды.
Первая — adb devices — показывает подключённые устройства, которые видит ADB. В терминале выглядит так:

Вводим вторую команду — adb -s название устройства logcat, — которая запускает утилиту Logcat для конкретного устройства. В терминале в реальном времени будут поступать логи.

Как их читать?
- В первом столбце — дата и время поступления записи.
- Во втором — обозначения уровней логирования. Например, D — это Debug.
- В третьем показываются названия инструмента, утилиты, пакета, от которых поступает сообщение, а также расшифровка того, что вообще происходит.
Третий инструмент — SDK Platform Tools. Процесс его установки практически аналогичен предыдущим двум:
- переводим телефон в режим разработчика,
- подключаем к ПК по USB,
- скачиваем на ПК папку SDK PT (под свою ОС),
- открываем папку SDK PT в терминале.
Теперь пишем команду ./adb logcat –v threadtime > ./android-debug.log.
В терминале это выглядит так:

Прерываем выполнение команды (например, на Mac это Control+C). Лог добавляется в папку.


Очень похоже на предыдущий терминал, но файл обновляется, пока в терминале действует команда.
Инструменты снятия логов: iOS
В первую очередь нас интересует xCode — интегрированная среда разработки (IDE), в которую встроен нужный нам инструмент Simulator.
Как использовать инструмент:
- Устанавливаем xCode.
- В системной строке нажимаем xCode → Open Developer Tools → Simulator.
- Устанавливаем приложение.
- В самом симуляторе выбираем Debug → Open System Log.
Мы будем видеть логи в реальном времени:

Подобное оформление логов мы уже где-то видели, но построение информации в выдаче немного отличается. Есть дата и время (1) и данные (2) о том, с какого устройства снята информация: имя компьютера, элемент системы, с которого пришло сообщение, и его расшифровка.
Но первый способ работает только с симуляторами. Если необходимо снимать логи с реального устройства, в этом может помочь раздел Devices and Simulators.
Записи можно отфильтровать по конкретному процессу (вашему приложению):
- Устанавливаем xCode.
- Подключаем устройство к ПК по USB.
- Открываем xCode → Windows → Devices and Simulators.
Дальше нажимаем у устройства Open Console и видим панель с названием устройства, информацией о модели и ОС:

Логи поступают в реальном времени, но их удобно отслеживать:

У нас есть три столбца:
- «Время» — время поступления сообщения.
- «Процесс» — с какой части системы/приложения пришло сообщение.
- «Сообщение» — описание события, сервисная информация.
В инструменте есть поиск для фильтрации выдачи. Ещё есть полезная кнопка «Приостановить» — она останавливает поток логов.
А вот утилита iMazing поможет снимать iOS-логи для тех, у кого установлен Windows. Приложение платное, но часть функциональности доступна бесплатно. Например, за снятие логов устройства платить не нужно.

В меню выбираем «Показать консоль устройства». В открывшемся окне приходят записи логов в реальном времени со всего устройства.

Ещё одно важное достоинство iMazing — возможность сохранять логи (разумеется, по кнопке «Сохранить»).
Статья подготовлена red_mad_robot и «Альфа-Банком» на основе доклада Senior QA red_mad_robot Ольги Никитиной «Инструменты для снятия логов с Android / iOS устройств. Чтение и разбор» на митапе «QАчественное общение» при поддержке red_mad_robot.
Логи мобильного браузера
Сбор логов мобильного браузера немного сложенее и включает в себя использование компьютера; этот процесс известен как Remote Debugging (Удаленная отладка).
Браузеры на основе хрома и Firefox поддерживают только удалённую отладку через USB для Android-устройств. iOS поддерживает только удалённую отладку на Safari.
Требования для Android-устройств
1. Включите Параметры разработчика на вашем Android-устройстве, нажав на Номер сборки семь раз.
2. Если у вас возникли проблемы с включением опций для разработчиков, нажмите здесь , чтобы узнать больше.
3. Откройте Параметры разработчика и включите USB отладку
4. Подключите устройство Android непосредственно к компьютеру с помощью кабеля USB.
5. На вашем компьютере скачать SSDK platform-tools отсюда .
6. Распакуйте его и откройте папку
7. Открыть командную строку (Windows) или терминал (MacOS или Linux)
8. Введите cd и пробел, а затем перетащите папку Unzipped platform tools в командную строку или терминал и нажмите клавишу enter
9. Теперь вы должны быть в папке platform-tools, например: cd c:\users\john\desktop\platform-tools.
10. Введите старт-сервер adb и разрешите любые запросы на доступ к вашему устройству.
Примечание: Вам необходимо запускать рекламный сервер, выполняя шаги 6 и 9 каждый раз перед захватом логов, в противном случае ваше устройство может быть не распознано браузером.
Удаленная отладка на Google Chrome/ любом браузере на базе Chromium [только для Android].
1. Перед началом работы убедитесь в том, что вы выполнили все необходимые шаги.
2. Откройте браузер Google Chrome на компьютере и перейдите к Chrome://inspect#devices.
3. Не имеет значения, какой браузер на базе Chromium вы используете в устройстве Android для тестирования; вы можете использовать компьютер Google Chrome для проверки вкладок этого браузера.
4. Убедитесь, что галочка «Обнаружить USB-устройства» включена, а устройство подключено к компьютеру и разблокировано.
5. Если вы видите название модели вашего Android-устройства, это означает, что DevTools успешно установил соединение с устройством.
Если ваше устройство отображается как автономное, принять приглашение разрешения Разрешить USB отладки на вашем устройстве Android
Если устройство DevTools не обнаруживает устройство Android, нажмите здесь , чтобы узнать о шагах по устранению неполадок.
6. Все открытые вкладки мобильного браузера будут отображаться внутри браузера Chrome для вашего компьютера, мы рекомендуем закрыть все вкладки
7. Откройте тестовый сайт на вашем Android-устройстве
8. Затем нажмите кнопку «Проверить» в браузере рабочего стола Chrome рядом с URL-адресом тестового сайта , откроется новое окно DevTools.
9. На вкладке «Консоль» нажмите на значок шестерни в правом верхнем углу.
10. Прокрутите вниз, чтобы найти Параметры консоли > выберите Показать метки времени и Сохранить логи при навигации.
11. Выход из настроек
12. Очистите консоль, нажав на значок «Очистить консоль» или щелкнув правой кнопкой мыши в окне консоли и выбрав «Очистить консоль».
13. Обновите страницу и воспроизведите баг, начиная с домашней страницы
14. Щелкните правой кнопкой мыши по журналам и выберите «Сохранить как«.
15. Сохранить файл как .txt
16. Откройте лог консоли и убедитесь, что на тестовом сайте есть метки времени и строка ‘Navigated to’ (например, 18:32:30.854 Navigated to https://www.utest.com ).
Удаленная отладка на Firefox [только для Android].
1. Откройте браузер Firefox для настольных компьютеров, нажмите на меню «Меню», а затем выберите Web Developer > «Удаленная отладка«.
2. Нажмите на кнопку Включить USB-устройства
3. Откройте Firefox на Android-устройстве и нажмите в меню иконку трёх точек и включите удаленную отладку через USB из настроек.
4. Вы увидите имя вашего устройства в браузере Firefox desktop, нажмите на кнопку «Подключить» рядом с ним.
Если Firefox не распознает ваше устройство, попробуйте выполнить шаги по устранению неполадок здесь .
5. Нажмите на имя устройства, чтобы увидеть все открытые вкладки, мы рекомендуем закрыть все вкладки
6. Откройте тестовый сайт в Firefox (Android-устройство).
7. Затем нажмите на кнопку «Проверить» в браузере Firefox на компьютере рядом с URL-адресом тестового сайта.
8. Откроется новое окно «Инструменты», выберите вкладку «Консоль«, затем нажмите на значок шестерни в правом верхнем углу и выберите «Persist Logs» и «Показывать метки времени«.
9. Нажмите на значок корзины, чтобы очистить ваши старые журналы
10. Обновите страницу и воспроизвелите баг , начиная с домашней страницы
11. Чтобы захватить логи, щелкните правой кнопкой мыши на консолиь > выберите «Экспорт видимых сообщений» > «Файл«.
12. Сохраните файл как .txt
13. Откройте лог консоли и убедитесь, что на сайте тестирования есть метки времени и строка ‘Navigated to’ (например, 18:32:30.854 Navigated to https://www.utest.com ).
Удалённая отладка на Safari [только для iOS].
1. Сначала откройте настройки iOS, прокрутите вниз, выберите Сафари > Дополнительно и включите веб-инспектор.
2. Соедините ваше iOS-устройство непосредственно с компьютером (должно быть MacOS), убедитесь, что доверяете вашему устройству Mac.
3. На вашем iOS-устройстве откройте Safari и держите одну вкладку открытой.
4. На устройстве для Mac откройте Safari и выберите Параметры.
5. Выберите значок «Дополнительная передача» и установите галочку «Показывать меню разработки» в пункте меню
6. Закрыть и нажать «Разработка» > Название вашего iPhone (например iPhone Джона) > Опция открытой вкладки «Сафари».
7. Веб-инспектор откроется, перейдите на вкладку «Консоль».
8. В консольном окне выберите «Сохранить лог» и щелкните по значку «Корзина«, чтобы очистить лог.
9. Обновите домашнюю страницу и воспроизведите баг, начиная с домашней страницы в вашем iOS устройстве.
10. Чтобы сохранить журналы, нажмите Command+S
11. Сохранить файл как .txt
Как снять логи с андроид устройства
Для всех приложений
Общие вопросы
Показать меню
Как получить лог-файл Android-смартфона
Статья обновлена: 24 апреля 2019 ID: 13048
При обращении в техническую поддержку по продуктам для Android специалисты «Лаборатории Касперского» могут попросить вас создать лог-файл Android-смартфона. По умолчанию доступ к лог-файлам отключен. Для того чтобы получить доступ, включите режим отладки.
Как включить режим отладки
Для сбора технической информации на смартфоне разрешите режим отладки из инструментария для разработчиков. По умолчанию доступ к нему отключен. Чтобы получить доступ:
- В меню настроек нажмите пункт Об устройстве (О телефоне и т.п.).

- Найдите пункт меню Номер сборки (он может находиться, например, в разделе Версия ПО).

- Несколько раз подряд нажмите на Номер сборки, пока не появится сообщение «Вы разработчик».

- Проверьте в настройках наличие нового пункта Для разработчиков.

- Войдите в раздел Для разработчиков и поставьте галочку в пункте Отладка через USB, затем подтвердите включение режима отладки.