Окно Logcat в Android Studio помогает отлаживать приложение, показывая журналы с устройства в реальном времени. Например, это могут быть сообщения, добавленные в приложение с помощью класса Log, сообщения от сервисов, работающих на Android, или системные сообщения, например о сборке мусора. Когда приложение выдает исключение, Logcat показывает сообщение, а затем связанную трассировку стека со ссылками на строку кода.
Начало работы с окном Logcat
Чтобы посмотреть сообщения в журнале для приложения, выполните следующие действия:
- В Android Studio соберите и запустите приложение на физическом устройстве или в эмуляторе.
- В строке меню выберите View (Вид) > Tool Windows (Окна инструментов) > Logcat.
По умолчанию Logcat прокручивается до конца. Если нажать на окно Logcat или прокрутить его вверх с помощью колесика мыши, эта функция отключится. Чтобы снова включить ее, нажмите Прокрутить до конца
на панели инструментов. Вы также можете использовать панель инструментов, чтобы очистить, приостановить или перезапустить Logcat.

Рисунок 1. Logcat форматирует журналы, чтобы упростить поиск полезной информации, например тегов и сообщений, и определить различные типы журналов, например предупреждения и ошибки.
Как читать журналы
Каждый журнал содержит дату, временную метку, идентификатор процесса и потока, тег, название пакета, приоритет и сообщение. Разные теги имеют уникальный цвет,
который помогает определить тип журнала. Каждой записи в журнале присваивается приоритет: FATAL, ERROR, WARNING, INFO, DEBUG или VERBOSE.
Например, у следующего сообщения в журнале приоритет DEBUG и тег ProfileInstaller:
2022-12-29 04:00:18.823 30249-30321 ProfileInstaller com.google.samples.apps.sunflower D Installing profile for com.google.samples.apps.sunflower
Как настроить представление журнала
В стандартном представлении журнала отображаются дата, время, идентификатор процесса и потока, тег, название пакета, приоритет и сообщение, связанное с каждым журналом. По умолчанию строки сообщений не переносятся в представлении журнала, но вы можете использовать параметр Мягкий перенос
на панели инструментов Logcat.
Вы можете переключиться на компактный вид, в котором по умолчанию отображается меньше информации. Для этого нажмите Configure Logcat Formatting Options (Настроить параметры форматирования Logcat)
на панели инструментов Logcat.
Чтобы настроить объем отображаемой информации, нажмите Изменить представления и выберите, что вы хотите видеть: временные метки, теги, идентификаторы процессов или названия пакетов.
Как изменить цветовую схему
Чтобы изменить цветовую схему, выберите Android Studio > Settings (Настройки) > Editor (Редактор) > Color Scheme (Цветовая схема). Чтобы изменить цветовую схему журнала, выберите Android Logcat. Чтобы изменить цветовую схему фильтра, выберите Logcat Filter (Фильтр Logcat).
Дополнительные настройки
Чтобы задать дополнительные настройки, выберите Android Studio > Settings (Настройки) > Tools (Инструменты) > Logcat. Здесь вы можете выбрать размер циклического буфера Logcat, фильтр по умолчанию для новых окон Logcat и указать, хотите ли вы добавлять фильтры из истории в автозаполнение.
Как использовать Logcat в нескольких окнах
Вкладки позволяют легко переключаться между устройствами и запросами. Чтобы создать несколько вкладок Logcat, нажмите Новая вкладка
.
Нажав на вкладку правой кнопкой мыши, вы можете переименовать или переместить ее.
Кроме того, вы можете разделить представление на вкладке, чтобы упростить сравнение двух наборов журналов. Чтобы разделить панель, нажмите правой кнопкой мыши в области просмотра журнала или выберите Разделить панели на панели инструментов, а затем нажмите Разделить вправо или Разделить вниз. Чтобы закрыть разделение, нажмите правой кнопкой мыши и выберите Закрыть. Для каждого разделения можно задать подключение устройства, параметры просмотра и запрос.
Рисунок 2. Разделенные окна Logcat в Android Studio.
На панели инструментов Logcat можно прокрутить журнал до конца или нажать на определенную строку, чтобы она оставалась видимой.
Как выполнять поиск в журналах по парам "ключ-значение"
В Android Studio можно генерировать поисковые запросы с парами "ключ-значение" прямо из основного поля запроса. Эта система запросов обеспечивает точность того, что вы хотите запросить, а также исключает журналы на основе пар "ключ-значение". Вы можете использовать регулярные выражения, но это не обязательно. Чтобы посмотреть подсказки, нажмите Ctrl + Space в поле запроса.
Рисунок 3. Нажмите Ctrl + Space в поле запроса, чтобы увидеть список рекомендуемых запросов.
Ниже приведены примеры ключей, которые можно использовать в запросе.
tag: сопоставление с полемtagзаписи в журнале.package– сопоставление с названием пакета приложения, которое ведет журнал.process– сопоставление с названием процесса приложения, которое ведет журнал.message: сопоставление с частью сообщения в записи в журнале.level– соответствует указанному или более высокому уровню серьезности, напримерDEBUG.age– совпадение, если временная метка записи недавняя. Значения указываются в виде числа, за которым следует буква, обозначающая единицу времени:s– секунды,m– минуты,h– часы,d– дни. Например,age: 5mфильтрует только сообщения, зарегистрированные за последние 5 минут.
Отрицание и регулярные выражения
Отрицание и регулярные выражения поддерживаются в следующих полях: tag, package, message и line.
Отрицание выражается добавлением - перед названием поля. Например, -tag:MyTag соответствует записям в журнале, в которых tag не содержит строку MyTag.
Чтобы указать, что значение поля должно соответствовать регулярному выражению, добавьте к названию поля ~.
например tag~:My.*Tag.
Отрицание и модификаторы регулярных выражений можно комбинировать. Пример: -tag~:My.*Tag.
Логические операторы и скобки
Язык запросов поддерживает операторы AND и OR, которые обозначаются как & и |, а также круглые скобки. Пример:
(tag:foo | level:ERROR) & package:mine
Обратите внимание, что операторы выполняются в стандартном порядке, поэтому выражение
tag:foo | level:ERROR & package:mine
Оценивается как:
tag:foo | (level:ERROR & package:mine)
Неявные логические операторы
Если логические операторы не применяются, язык запросов автоматически оценивает несколько неотрицательных условий фильтра key-value с одним и тем же ключом как OR, а все остальное – как AND.
Пример:
tag:foo tag:bar package:myapp
Оценивается как:
(tag:foo | tag:bar) & package:myapp
Но:
tag:foo -tag:bar package:myapp
Оценивается как:
tag:foo & -tag:bar & package:myapp
Если несколько поисковых запросов разделены пробелом без логического оператора, они обрабатываются как оператор AND с низким приоритетом. Например, запрос foo bar tag:bar1 | tag:bar2 эквивалентен запросу 'foo bar' & (tag: bar1 | tag: bar2).
Специальные запросы
package:mine
Ключ пакета поддерживает специальное значение mine. Это специальное значение соответствует любым названиям пакетов, которые содержатся в открытом проекте.
level
Запрос level сопоставляется с уровнем записи в журнале Logcat, где уровень записи больше или равен уровню запроса.
Например, level:INFO соответствует любой записи в журнале с уровнем INFO, WARN, ERROR или ASSERT. Регистр не учитывается. Допустимые значения: VERBOSE, DEBUG, INFO, WARN, ERROR и ASSERT.
age
Запрос age сопоставляет записи на основе их временной метки и имеет формат age:<number><unit>, где:
<number>– целое число.<unit>– этоs,m,hилиd(секунды, минуты, часы или дни).
В списке ниже приведены запросы age, которые соответствуют сообщениям в журнале с временной меткой в диапазоне, описанном значением. Например, запрос age:5m соответствует записям с временной меткой не ранее 5 минут назад.
age:30s
age:5m
age:3h
age:1d
Обратите внимание, что временная метка сравнивается с временной меткой хоста, а не подключенного устройства. Если время на устройстве установлено неправильно, запрос может работать некорректно.
is
Вы можете использовать ключ is следующим образом:
is:crashсоответствует записям в журнале, которые представляют сбой приложения (нативного или Java).is:stacktraceсоответствует записям в журнале, которые похожи на трассировку стека Java, независимо от уровня журнала.
name
Ключ name позволяет задать уникальное название для сохраненного фильтра, чтобы его было легко найти в раскрывающемся списке истории фильтров. Если вы укажете name несколько раз, ошибки не возникнет, но IDE будет использовать только последнее значение name в запросе.
Как посмотреть историю запросов
Чтобы посмотреть историю запросов, нажмите Показать историю
рядом с полем запроса. Чтобы добавить запрос в избранное и закрепить его вверху списка во всех проектах студии, нажмите на звездочку рядом с ним. Вы также можете использовать клавишу name:, чтобы избранные запросы было проще распознавать. Подробнее о специальных запросах…

Рисунок 4. Чтобы добавить запрос в избранное, нажмите на звездочку рядом с ним.
Отслеживание журналов при сбоях и перезапусках приложения
Когда Logcat обнаруживает, что процесс приложения остановлен и перезапущен, он выводит сообщение, например PROCESS ENDED и PROCESS STARTED.
При перезапуске Logcat сохраняются настройки сеанса, такие как разделение вкладок, фильтры и параметры просмотра, поэтому вы можете легко продолжить сеанс.

Рисунок 5. Когда процесс приложения перезапустится, в Logcat появится сообщение о том, что процесс завершился, а затем начался.