Android Studio
April 13, 2022

View Logs with Logcat (Android Studio Dolphin и ниже)

В версии Android Studio Electric Eel | 2022.1.1 (Jan 2023) был включен новый Logcat, чтобы упростить анализ, запросы и отслеживание журналов. Поэтому данная актуальна только для старых версий Android Studio: Dolphin и ниже.

Обновленный Logcat -> https://alexzh.com/new-logcat-5-features-for-effective-android-app-debugging/


Что такое Logcat

Окно Logcat в Android Studio отображает системные сообщения (Логи) в режиме реального времени и хранит историю, чтобы вы могли просматривать более старые сообщения. Например, когда приложение выдает исключение, logcat показывает сообщение, за которым следует соответствующая трассировка стека, содержащая ссылки на строку кода.

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

По умолчанию logcat показывает выходные данные журнала, относящиеся только к последнему запущенному приложению.


Просмотр журнала (View your app logs)

Чтобы отобразить сообщения журнала для приложения:

  1. Запустите приложение
  2. Нажмите View > Tool Windows > Logcat (или нажмите Logcat на панели инструментов)
Рисунок 1. Скриншот из Android Studio

В окне Logcat отображаются сообщения журнала для выбранного приложения, как показано на рисунке 2.


Основные функции 1-9 в окне Logcat

Рисунок 2. Окно Logcat.

Рассмотрим боковые функции 1-9:

  1. Очистка: Нажмите, чтобы очистить видимый журнал.
  2. Прокрутка в конец: нажмите, чтобы перейти к нижней части журнала и просмотреть последние сообщения журнала. Если затем щелкнуть строку в журнале, представление приостановит прокрутку в этой точке.
  3. Вверх и Вниз по трассировке стека: Нажмите, чтобы перемещаться вверх и вниз по трассировке стека в журнале, выбирая последующие имена файлов (и просматривая соответствующие номера строк в редакторе), которые появляются в печатных исключениях. Это то же самое поведение, что и при нажатии на имя файла в журнале.
  4. Использовать мягкие переносы: нажмите, чтобы включить перенос строк и запретить горизонтальную прокрутку (хотя любые неразрывные строки по-прежнему требуют горизонтальной прокрутки).
  5. Печать: Нажмите, чтобы распечатать сообщения logcat. После выбора настроек печати в появившемся диалоговом окне вы также можете сохранить файл в формате PDF.
  6. Перезапустить: нажмите, чтобы очистить журнал и перезапустить logcat. В отличие от кнопки «Очистить logcat», эта кнопка восстанавливает и отображает предыдущие сообщения журнала, поэтому наиболее полезна, если Logcat перестает отвечать на запросы и вы не хотите терять сообщения журнала.
  7. Заголовок Logcat: нажмите, чтобы открыть диалоговое окно «Настройка заголовка Logcat», в котором можно настроить внешний вид каждого сообщения logcat, например указать, показывать ли дату и время (Рисунки 3-4.)
  8. Снимок экрана: нажмите, чтобы сделать снимок экрана.
  9. Запись экрана: Нажмите, чтобы записать видео с устройства (максимум 3 минуты).
Рисунок 3. Настройка заголовка Logcat.
Рисунок 4. Рекомендую следующие настройки для повышения читабельности.

Формат сообщения Logcat

Все сообщения журнала Android имеют определенный формат:

Date Time PID-TID/package priority/tag: message 

На рисунках 3-4, можно наблюдать пример настройки отображения данного формата. Подробнее https://developer.android.com/studio/debug/am-logcat#format


Установка цветовой схемы

  1. В Android Studio нажмите File > Settings (Рисунок 5).
  2. В окне настроек откройте раздел Editor > Color Scheme > Android Logcat.
  3. Скачайте файл настроек цветовой схемы.
  4. Импортируйте и примените цветовую схему (Рисунок 6).
Рисунок 5. Настройки Android Studio.
Рисунок 6. Импортирование цветовой схемы для Logcat.

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


Фильтрация сообщений Logcat

Рисунок 7. Окно Logcat.

Перейдем к основным функциям A-E:

  • A) Current-Device: Выбор устройства к которому подключится adb. По клику отобразится список доступных устройств (те у которых включен режим отладки в настройках разработчика)
  • B) Current-Application: Выбор приложения для отладки к которому подключится Logcat. По клику отобразится список запущенных приложений для отладки. Приложение должно быть скомпилировано в режиме отладки (DEBUG). По умолчанию выбирается последнее запущенное приложение, если это возможно.
  • C) Log-Level-Filter: Верхне уровневый фильтр по типу сообщения.
  • D) Search-Filter: Для поиска сообщений, отображаемых в данный момент в Logcat (При необходимости выберите Regex, если вы хотите использовать шаблон поиска регулярного выражения)
  • E) Global-Filter: Верхне уровневый фильтр, применяется ко всей вашей истории Logcat, а не только к тем сообщениям, которые в данный момент отображаются в logcat.


Global-Filter (E)

Оригинал

В меню фильтра выберите параметр фильтра:

Рисунок 8. Меню выбора настроек для глобального фильтра.
  • Show only selected application: отображать только сообщения, созданные кодом приложения (по умолчанию). Logcat фильтрует сообщения журнала, используя PID активного приложения.
  • No filters: не применять фильтры. Logcat отображает все сообщения журнала с устройства, независимо от того, какой процесс вы выбрали.
  • Edit Filter Configuration: Создайте или измените пользовательский фильтр. Например, вы можете создать фильтр для одновременного просмотра сообщений журнала из двух приложений.

Добавление новых фильтров

Чтобы создать новый фильтр, нажмите Edit Filter Configuration в списке (Рис. 8).

Рисунок 9. Диалоговое окно создания фильтра.

Укажите параметры фильтра в диалоговом окне Create New Logcat Filter:

  • Filter Name: введите название фильтра или выберите его на левой панели, чтобы изменить существующий фильтр. Имя может содержать только символы нижнего регистра, символы подчеркивания и цифры.
  • Log Tag: При необходимости укажите тег. Тег определяется разработчиком, например это может быть название класса.
  • Log Message: При необходимости укажите текст сообщения.
  • Package Name: При необходимости укажите название пакета приложения.
  • PID: При необходимости укажите идентификатор процесса.
  • Log Level: При необходимости выберите log-level.
  • Regex: выберите этот параметр, чтобы использовать синтаксис регулярного выражения для этого параметра.
Примечание: Имейте ввиду, что параметры фильтрации (tag, message, PID и т.д.) определены в формате вывода логов как сообщалось ранее.

Исключить сообщения ОС из Logcat

В журнале отображается очень много мусора, который в 90% случаев не важен, решение: создайте новый фильтр с регулярным выражением

^(?!.*(BtGatt|dalvik|Environment|DataRouter|FA|art|Wifi|ServiceManager|Atfwd|tnet|MDnsDS|Download|Bluetooth|slim|QSEECOMAPI|WVCdm|QC-time|sensors|nanohub|Drm|Babel|Dropbox|gsamlab|Cryptd|Vold|QC_|Conscrypt|Dns|sound|NetWork|OpenGL|TLog|GMPM|Microphone|Process|Dynamite|cr_|VideoCapabilities|libEGL|NetdEventListenerService|Sensors|Netd|audit|Zygote|Watchdog|ity|memtrack|fb4a|LoadedApk|ImsAdaptorImpl|EPDG|CursorWindow|tworkdiagnosti|PackageManager))
Рисунок 10. Создание нового фильтра для Logcat.

А затем выберете его из списка фильтров:

Рисунок 11. Список доступных фильтров.

Вы также можете добавить новое ключевое слово\тег, который хотите игнорировать, с помощью «|» как разделитель.

Автор: https://medium.com/zinuzoid/if-you-developing-android-application-1bdff0a96205

Log level (описание)

В меню Уровень журнала выберите одно из следующих значений:

  • Verbose: показать все сообщения журнала (по умолчанию).
  • Debug: Показать сообщения журнала отладки, которые полезны только во время разработки, а также уровни сообщений ниже в этом списке.
  • Info: Показать ожидаемые сообщения журнала для регулярного использования, а также уровни сообщений ниже в этом списке.
  • Warn: показывать возможные проблемы, которые еще не являются ошибками, а также уровни сообщений ниже в этом списке.
  • Error: Показать проблемы, вызвавшие ошибки, а также уровень сообщения ниже в этом списке.
  • Assert: Показать проблемы, которые, по мнению разработчика, никогда не должны возникать.

Search Filter (D)

Данный тип фильтрации используется как уточнение для Global-Filter. Поскольку его удобно менять "на ходу". Его отличие от Global-Filter заключается в том, что поисковый запрос распространяется на сообщение целиком, а не на определенный параметр(tag, level, PID, message) как это указывается при создании фильтра.

В качестве поискового запроса можно использовать шаблон регулярного выражения.

Фильтр поисковой строки.
Результаты фильтрации: Вывод всех строк, где встречается слово "connection".

Примеры фильтрации поиска: в качестве запроса укажу пакет приложения id.apps.tachyo

Результаты фильтрации: Вывод всех строк, где встречается текст "id.apps.tachyo:"
Результаты фильтрации: Вывод всех строк, где встречается текст "id.apps.tachyo:" c Log-Level = Error
Результаты фильтрации: Вывод всех строк, где встречается текст "id.apps.tachyo:" c Log-Level = Warn

Тот же самый результат, если добавить в поисковый результат Tag "W", который отображает log-level.

Результаты фильтрации: Вывод всех строк, где встречается текст "W/id.apps.tachyo:"

Поиск в логах

Также, если нажать в окно вывода, а затем Ctrl+F, то откроется поисковая строка, которая позволяет не фильтруя Logcat искать в нем нужный текст. Это бывает удобно, например если нужно подсветить ключевые фразы и видеть остальные логи.

Поиск слова "hidden" в журнале.