Android

Фильтрация logcat: эффективные методы поиска ошибок в Android

Этот гайд покажет, как использовать logcat для эффективного отладки Android-приложений. Вы научитесь фильтровать логи по тегам, уровням и PID, а также настраивать Android Studio для целевого поиска.

Обновлено 8 апреля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Android 8.0+ADB 1.0.41+Android Studio 2022.2+

Введение / Зачем это нужно

logcat — это главный инструмент Android для просмотра системных и прикладных логов. При разработке или диагностике проблем вы сталкиваетесь с огромным потоком данных, где нужная ошибка тонет в шуме. Фильтрация logcat позволяет быстро изолировать логи вашего приложения, конкретного компонента или уровня важности, экономя часы на поиск. После этого гайда вы сможете находить критические ошибки за секунды.

Требования / Подготовка

Перед началом убедитесь, что:

  1. Установлен Android SDK Platform-Tools (содержит ADB).
  2. На устройстве или эмуляторе включён USB-дебаггинг (Настройки → Для разработчиков → USB-дебаггинг).
  3. Устройство подключено к компьютеру и разрешён доступ ADB (на запрос на устройстве нужно нажать «Разрешить»).
  4. (Опционально) Установлен Android Studio для использования встроенного Logcat.

Проверьте работоспособность командой:

adb version
adb devices

В списке устройств должен отобразиться ваш телефон или эмулятор.

Пошаговая инструкция

Шаг 1: Базовые команды и понимание формата лога

Логи logcat имеют структуру: дата время PID TID уровень тег : сообщение. Основные уровни (от младшего к старшему): VERBOSEDEBUGINFOWARNERRORFATALSILENT.

Самая простая фильтрация — по уровню. Чтобы видеть только ошибки и выше:

adb logcat *:E

Это скроет все VERBOSE, DEBUG и INFO сообщения. Для отладки приложения часто достаточно *:W (warnings and errors).

Шаг 2: Фильтрация по тегу (Tag)

В коде Android вы логируете через Log.d("MyTag", "message"). Тег MyTag — ваш ключ для фильтрации.

Чтобы видеть только логи с тегом MyTag:

adb logcat -s "MyTag"

Можно комбинировать несколько тегов:

adb logcat -s "MyTag" -s "AnotherTag"

Важно: теги чувствительны к регистру. Если не уверены в имени тега, сначала смотрите полный лог, затем фильтруйте.

Шаг 3: Фильтрация по имени пакета (PID)

Иногда теги не уникальны. Тогда можно фильтровать по ID процесса (PID) вашего приложения.

  1. Найдите PID:
adb shell ps | grep your.package.name

Пример вывода: u0_a123 12345 567 1234567 123456 /system/bin/app_process ...

  1. Фильтруйте логи по PID:
adb logcat --pid=12345

Это покажет только логи из процесса с указанным PID. Отлично подходит, когда в логах много системных сообщений от других приложений.

Шаг 4: Создание сложных фильтров с регулярными выражениями

logcat поддерживает простые регулярные выражения для тегов. Например, чтобы увидеть логи всех тегов, начинающихся с MyApp:

adb logcat -s "MyApp.*"

Или исключить конкретный тег (например, шумный OpenGLRenderer):

adb logcat | grep -v "OpenGLRenderer"

Минус: grep работает уже после вывода logcat, поэтому может быть медленнее на больших объёмах.

Шаг 5: Использование фильтров в Android Studio

Android Studio предоставляет мощный GUI для logcat:

  1. Откройте View → Tool Windows → Logcat.
  2. Вверху окна выберите своё устройство и процесс (приложение) из выпадающих списков.
  3. Используйте поле Search для поиска по тексту, тегу или PID.
  4. Создайте собственный фильтр (иконка +): задайте имя пакета, тег или уровень. Сохраните для повторного использования.
  5. Для сохранения логов в файл нажмите Save Logcat... (иконка дискеты).

Шаг 6: Сохранение логов в файл для анализа

Часто нужно отправить логи разработчику или проанализировать офлайн. Два основных способа:

Способ A: Через ADB (все логи)

adb logcat -d > full_logs.txt

Флаг -d дампует текущий буфер и завершает работу. Без него команда будет ждать новых логов.

Способ B: Только отфильтрованные логи

adb logcat -s "MyTag" -d > filtered_logs.txt

Добавьте -v time для человекочитаемых временных меток:

adb logcat -v time -s "MyTag" -d > logs_with_time.txt

Проверка результата

  1. Для командного способа: после выполнения команды adb logcat -s "MyTag" в терминале должны отображаться только строки с указанным тегом.
  2. Для Android Studio: в окне Logcat должны отображаться строки, соответствующие выбранному фильтру (по пакету, тегу или уровню). Проверьте, что в правом верхнем углу не стоит фильтр «No Filters».
  3. Для сохранения в файл: откройте полученный .txt файл в любом редакторе и убедитесь, что он содержит только нужные записи.

Возможные проблемы

Проблема: adb devices не показывает устройство

Причина: Драйверы не установлены (Windows), USB-дебаггинг не включён или не подтверждён RSA-ключ. Решение:

  • Включите USB-дебаггинг в настройках разработчика.
  • При подключении телефона подтвердите запрос «Разрешить USB-отладку?».
  • Установите OEM-драйверы (для Windows) или используйте adb kill-server && adb start-server.

Проблема: Фильтр по тегу не работает, логи не отображаются

Причина: Тег в коде отличается от указанного в команде (регистр, опечатка) или уровень логирования для этого тега установлен выше (например, INFO), а вы ищете DEBUG. Решение:

  • Проверьте тег в исходном коде: Log.d("MyTag", ...).
  • Убедитесь, что уровень логирования не фильтруется глобально. Попробуйте adb logcat *:V (verbose) для начала.
  • Используйте adb logcat | grep "часть_тега" для поиска подстроки.

Проблема: Логи обрываются или не хватает предыдущих записей

Причина: Буфер logcat имеет ограниченный размер (по умолчанию ~256 КБ на циклический буфер). Старые записи перезаписываются. Решение:

  • Используйте adb logcat -c для очистки буфера перед началом отладки, затем сразу запускайте нужное действие и собирайте логи.
  • Для долгих сессий сохраняйте логи в файл сразу: adb logcat -f my_logs.txt.

Часто задаваемые вопросы

Как отфильтровать логи только по тегу моего приложения?
Как сохранить весь вывод logcat в файл для анализа?
Почему я не вижу логи своего приложения в Android Studio?

Полезное

Настройка ADB и подключение устройства
Использование базовых фильтров по уровню логирования
Фильтрация по конкретному тегу (tag) или PID
Настройка фильтров в Android Studio
Сохранение и анализ логов