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)
Чтобы отобразить сообщения журнала для приложения:
- Запустите приложение
- Нажмите View > Tool Windows > Logcat (или нажмите Logcat на панели инструментов)
В окне Logcat отображаются сообщения журнала для выбранного приложения, как показано на рисунке 2.
Основные функции 1-9 в окне Logcat
Рассмотрим боковые функции 1-9:
- Очистка: Нажмите, чтобы очистить видимый журнал.
- Прокрутка в конец: нажмите, чтобы перейти к нижней части журнала и просмотреть последние сообщения журнала. Если затем щелкнуть строку в журнале, представление приостановит прокрутку в этой точке.
- Вверх и Вниз по трассировке стека: Нажмите, чтобы перемещаться вверх и вниз по трассировке стека в журнале, выбирая последующие имена файлов (и просматривая соответствующие номера строк в редакторе), которые появляются в печатных исключениях. Это то же самое поведение, что и при нажатии на имя файла в журнале.
- Использовать мягкие переносы: нажмите, чтобы включить перенос строк и запретить горизонтальную прокрутку (хотя любые неразрывные строки по-прежнему требуют горизонтальной прокрутки).
- Печать: Нажмите, чтобы распечатать сообщения logcat. После выбора настроек печати в появившемся диалоговом окне вы также можете сохранить файл в формате PDF.
- Перезапустить: нажмите, чтобы очистить журнал и перезапустить logcat. В отличие от кнопки «Очистить logcat», эта кнопка восстанавливает и отображает предыдущие сообщения журнала, поэтому наиболее полезна, если Logcat перестает отвечать на запросы и вы не хотите терять сообщения журнала.
- Заголовок Logcat: нажмите, чтобы открыть диалоговое окно «Настройка заголовка Logcat», в котором можно настроить внешний вид каждого сообщения logcat, например указать, показывать ли дату и время (Рисунки 3-4.)
- Снимок экрана: нажмите, чтобы сделать снимок экрана.
- Запись экрана: Нажмите, чтобы записать видео с устройства (максимум 3 минуты).
Формат сообщения Logcat
Все сообщения журнала Android имеют определенный формат:
Date Time PID-TID/package priority/tag: message
На рисунках 3-4, можно наблюдать пример настройки отображения данного формата. Подробнее https://developer.android.com/studio/debug/am-logcat#format
Установка цветовой схемы
- В Android Studio нажмите File > Settings (Рисунок 5).
- В окне настроек откройте раздел Editor > Color Scheme > Android Logcat.
- Скачайте файл настроек цветовой схемы.
- Импортируйте и примените цветовую схему (Рисунок 6).
Теперь логи относящиеся к разным типа сообщений будут иметь различные цвета, что упростит навигацию.
Фильтрация сообщений 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)
В меню фильтра выберите параметр фильтра:
- Show only selected application: отображать только сообщения, созданные кодом приложения (по умолчанию). Logcat фильтрует сообщения журнала, используя PID активного приложения.
- No filters: не применять фильтры. Logcat отображает все сообщения журнала с устройства, независимо от того, какой процесс вы выбрали.
- Edit Filter Configuration: Создайте или измените пользовательский фильтр. Например, вы можете создать фильтр для одновременного просмотра сообщений журнала из двух приложений.
Добавление новых фильтров
Чтобы создать новый фильтр, нажмите Edit Filter Configuration в списке (Рис. 8).
Укажите параметры фильтра в диалоговом окне 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))
А затем выберете его из списка фильтров:
Вы также можете добавить новое ключевое слово\тег, который хотите игнорировать, с помощью «|» как разделитель.
Автор: 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) как это указывается при создании фильтра.
В качестве поискового запроса можно использовать шаблон регулярного выражения.
Примеры фильтрации поиска: в качестве запроса укажу пакет приложения id.apps.tachyo
Тот же самый результат, если добавить в поисковый результат Tag "W", который отображает log-level.
Поиск в логах
Также, если нажать в окно вывода, а затем Ctrl+F, то откроется поисковая строка, которая позволяет не фильтруя Logcat искать в нем нужный текст. Это бывает удобно, например если нужно подсветить ключевые фразы и видеть остальные логи.