Найти тему
Zen coder

Logcat

Оглавление

Logcat - инструмент в Android Studio, который кроме прикольного названия еще и является незаменимым помощником. Он показывает логи от активного устройства в "живом" времени.

окно Logcat
окно Logcat

Каждое сообщение содержит информацию (в порядке следования):

время, процесс и поток, тег, имя пакета, уровень, текст сообщения.

Уровни сообщения обозначаются буквами:

  • fatal - F
  • error - E
  • warning - W
  • info - I
  • debug - D
  • verbose - V

Фильтры

Сообщения удобно фильтруются по принципу "ключ:значение".

управляющие элементы Logcat
управляющие элементы Logcat

Основные ключи фильтра:

  • tag: по тегу.
  • package: по пакету ("" только сообщения из пакетов открытого проекта).
  • process: по процессу.
  • message: по тексту сообщения.
  • level: по уровню сообщения ("level:debug" сообщения debug и выше).
  • age: за время (s, m, h, d) ("age:5m" сообщения за последние 5 минут).

Инструмент очень гибкий, можно использовать:

Исключающие фильтры

-tag:myTag

Регулярные выражения

tag~:my.*Tag

Комбинированные фильтры

(tag:special | level:error) & package:mine

Полезные фильтры:

  • package:mine - только сообщения из пакетов открытого проекта
  • is:crash - сообщения, касающиеся нарушения работоспособности приложения
  • is:stacktrace - все что выглядит как stacktrace

Запись в Logcat

Для записи в лог используется класс Log.

Хорошим внутренним соглашением является создание константы тега для каждого класса, и передачи ее при логировании.

-4

У класса Log есть статические методы для записи сообщений в лог. Для каждого уровня сообщения отдельный метод, названный по букве уровня сообщений.

Проще показать на примере:

Log.e(...) - запишет сообщение уровня error

Log.d(...) - запишет сообщение уровня debug

Сигнатура

У каждого метода существует 2 варианта:

Log.d(tag: String?, msg: String)
Log.d(tag: String?, msg: String?, tr: Throwable?)

tag - определяет класс, откуда сообщение
msg - текст сообщения
tr - исключение

Примеры сообщений

-5

* Exception() - вернет текущий stacktrace.

#программирование #android #debug