Просмотр журналов с помощью Logcat

Окно Logcat в Android Studio помогает вам отлаживать приложение, отображая журналы с вашего устройства в режиме реального времени — например, сообщения, которые вы добавили в свое приложение с помощью класса Log , сообщения от служб, работающих на Android, или системные сообщения, такие как когда происходит сбор мусора. Когда приложение генерирует исключение, Logcat отображает сообщение, за которым следует связанная трассировка стека, содержащая ссылки на строку кода.

Начало работы с окном Logcat

Чтобы просмотреть сообщения журнала вашего приложения, выполните следующие действия.

  1. В Android Studio создайте и запустите свое приложение на физическом устройстве или в эмуляторе.
  2. Выберите «Просмотр» > «Окна инструментов» > Logcat в строке меню.

По умолчанию 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, нажав «Новая вкладка». Значок новой вкладки . Щелчок правой кнопкой мыши по вкладке позволяет переименовать ее и изменить ее порядок.

Кроме того, вы можете разделить представление на вкладке, чтобы вам было легче сравнивать два набора журналов. Чтобы создать разделение, щелкните правой кнопкой мыши в представлении журнала или выберите параметр «Разделить панели» на панели инструментов и выберите «Разделить справа» или «Разделить вниз» . Чтобы закрыть разделение, щелкните правой кнопкой мыши и выберите «Закрыть» . Каждое разделение позволяет вам установить собственное подключение устройства, параметры просмотра и запрос.

Несколько окон 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 сохраняет конфигурацию вашего сеанса, такую ​​как разделение вкладок, фильтры и параметры просмотра, поэтому вы можете легко продолжить сеанс.

Окно Logcat для сбоев приложения

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