Окно Logcat в Android Studio помогает вам отлаживать приложение, отображая журналы с вашего устройства в режиме реального времени — например, сообщения, которые вы добавили в свое приложение с помощью класса Log
, сообщения от служб, работающих на Android, или системные сообщения, такие как когда происходит сбор мусора. Когда приложение генерирует исключение, Logcat отображает сообщение, за которым следует связанная трассировка стека, содержащая ссылки на строку кода.
Начало работы с окном Logcat
Чтобы просмотреть сообщения журнала вашего приложения, выполните следующие действия.
- В Android Studio создайте и запустите свое приложение на физическом устройстве или в эмуляторе.
- Выберите «Просмотр» > «Окна инструментов» > 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.
Вы можете переключиться на компактный вид, который содержит меньше отображаемой информации по умолчанию, нажав «Настроить параметры форматирования Logcat». с панели инструментов Logcat .
Чтобы дополнительно настроить объем отображаемой информации, выберите «Изменить представления» и выберите, хотите ли вы отображать метку времени, теги, идентификаторы процессов или имена пакетов.
Изменить цветовую схему
Чтобы изменить цветовую схему, перейдите в Android Studio > Настройки > Редактор > Цветовая схема . Чтобы изменить цветовую схему просмотра журнала, выберите Android Logcat . Чтобы изменить цветовую схему вашего фильтра, выберите Logcat Filter .
Дополнительные возможности конфигурации
Для получения дополнительных параметров конфигурации перейдите в Android Studio > Настройки > Инструменты > 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
Если несколько терминов запроса разделены пробелами без логического оператора, они обрабатываются как оператор «И» с низким приоритетом. Например, термин 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 печатает сообщение о том, что процесс завершился, а затем начался.