Log class
Стартуем LogCat
Фильтрация вывода логов
Управление форматом вывода логов
Просмотр альтернативных буферов вывода
Просмотр stdout и stderr
Отладка веб-страниц
Система регистрации Android обеспечивает механизм для сбора и просмотра вывода отладочной информации. Logcat делает дамп логов системных сообщений, которые включают в себя такие вещи, как трассировки стека, когда эмулятор выдает сообщение об ошибке и сообщения, которые вы написали из вашего приложения, используя класс Log. Вы можете запустить LogCat через ADB или DDMS, которые позволяет читать сообщения в реальном времени.
Класс Log
________________________________________
Log – это логирующий класс, который можно использовать в коде для вывода сообщения в LogCat. Общие методы ведения журналов включают в себя:
• V (String, String) (подробно)
• D (String, String) (отладка)
• I (String, String) (информация)
• W (String, String) (предупреждение)
• е (String, String) (ошибка)
Например:
Код: Выделить всё
Log.i ("MyActivity", "MyClass.getView() - получить номер позиции" + position);
Код: Выделить всё
I / MyActivity (1557): MyClass.getView () - получить номер позиции 1
________________________________________
Вы можете использовать LogCat изнутри DDMS или вызывать ее из ADB-шелл. Для получения дополнительной информации о том, как использовать в LogCat DDMS см. Using DDMS. Для запуска LogCat через ADB-шелл используйте следующее:
Код: Выделить всё
[adb] LogCat [< опции >] ... [<filter-spec>] ...
Код: Выделить всё
$ adb logcat
Код: Выделить всё
# logcat
-c Очистка журнала и выход
-d Дамп лога на экран и выход
-f <filename> Запись логов в <filename>. По умолчанию stdout.
-g Вывод размер указанного буфера журнала и выход
-n <count> Устанавливает максимальное количество обновления логов из <count> . Значение по умолчанию 4. Требует -R опцию
-r <kbytes> Обновление лог-файла каждые <kbytes> продукции. Значение по умолчанию равно 16. Требует F- опцию
-s Задает спецификацию фильтров по умолчанию в беззвучный режим
-v <format> Устанавливает формат вывода сообщений логов. По умолчанию brief-формат. Список поддерживаемых форматов см. в разделе Controlling Log Output Format
Фильтрация вывода логов
Каждое сообщение лога Android имеет тег и приоритет, связанные с ним.
• Тег сообщения лога – короткая строка, указывающую на компонент системы, из которой сообщение исходит (например, " View " для представления системы).
• Приоритет - один из следующих символов, в порядке приоритета от низшего к высшему:
o V - Verbose (самый низкий приоритет)
o D - Debug
o I - Info
o W - Warning
o E - Error
o F - Fatal
o S - Silent (самый высокий приоритет, на котором ничего даже не выводится)
Вы можете получить список тегов, используемых в системе, вместе с приоритетами, запустив LogCat и наблюдая первые два столбца каждого сообщения, <priority> / <tag> .
Вот пример из LogCat-вывода, который показывает, что сообщение относится к приоритету уровня "I" и тегу "ActivityManager":
Код: Выделить всё
I/ActivityManager (585): Starting activity: Intent { action=Android.intent.action...}
Выражение фильтра имеет следующий формат tag:priority..., где tag указывает интересующий тег и priority указывает на минимальный уровень приоритета рапортовать по этому тегу. Сообщения тега этого уровня или приоритетом выше записываются в журнал. Вы можете указать любое количество tag:priority спецификаций в одном выражении фильтра. Набор спецификаций разделяется пробелами.
Вот пример фильтра, который подавляет все сообщения, за исключением с тегом "ActivityManager", с приоритетом "Info" или выше, и все сообщения, с тегом "MyApp", с приоритетом "Debug" или выше:
Код: Выделить всё
adb logcat ActivityManager:I MyApp:D *:S
Следующее выражение фильтра показывает все сообщения, с уровнем приоритета "warning" и выше на все теги:
Код: Выделить всё
adb logcat *:W
Код: Выделить всё
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
Контроль формата вывода логов
Лог-сообщения содержат ещё ряд полей метаданных в дополнение к полям тег и приоритет. Вы можете изменить формат вывода логов, чтобы они отображали определенное поле метаданных. Чтобы сделать это, используйте опцию –V и укажите один из поддерживаемых форматов вывода, перечисленных ниже.
• brief - отображает приоритет/тег и PID процесса, который послал сообщение (формат по умолчанию)
• process - только PID
• tag - отображает приоритет/тег
• raw - отображает лог как raw, без других полей метаданных
• time - отображает дату, времени вызова, приоритет/тег, и PID процесса, который послал сообщение
• threadtime - отображает дату, времени вызова, приоритет, тег и PID и TID потока, который послал сообщение
• long - отображение всех полей метаданных и отдельно сообщения с пустыми строками.
При запуске LogCat вы можете указать выходной формат, который вы хотите с помощью опции -v:
Код: Выделить всё
[adb] logcat [- v <format>]
Код: Выделить всё
adb logcat - v thread
Просмотр альтернативных буферов логов
Система регистрации Android хранит несколько кольцевых буферов логов, и не все из логов отправляются в кольцевой буфер по умолчанию. Для отображения дополнительных сообщений журнала, вы можете запустить LogCat команду с опцией –b для просмотра альтернативного кольцевого буфера. Вы можете просмотреть любой из этих альтернативных буферов:
• radio - просмотр буфера, содержащего логи радио/телефонии
• events - просмотр буфера, содержащего сообщения, связанных с событиями
• main - просмотр основного лог-буфера (по умолчанию)
Использование опции -b:
Код: Выделить всё
[abp] logcat [-b <buffer>]
Код: Выделить всё
abp logcat -b radio
________________________________________
По умолчанию, система Android посылает stdout и stderr (System.out и System.err) вывод на /Dev/null. В процессах, которые управляют Dalvik VM, у вас есть система записи копии вывода в лог-файл. В этом случае система записывает сообщения в лог с помощью лог-тегов stdout и stderr с приоритетом I.
Для такого вывода логов вы останавливаете запущенный эмулятор/устройство, а затем используете шелл-команду SetProp, чтобы перенаправить вывод. Вот как это делается:
Код: Выделить всё
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
Отладка веб-приложений
________________________________________
Если вы разрабатываете веб-приложение для Android, вы можете отлаживать JavaScript с помощью консоли JavaScript APIs, выводя сообщения LogCat. Для получения дополнительной информации см. Debugging Web Apps.