Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 16 окт 2018, 04:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Чтение и запись логов (LogCat)
СообщениеДобавлено: 11 сен 2013, 22:52 

Зарегистрирован: 21 мар 2013, 12:26
Сообщений: 267
Благодарил (а): 22 раз.
Поблагодарили: 19 раз.
Чтение и запись логов
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) (ошибка)

Например:
Код: [ Загрузить ] [ Скрыть ]
  1. Log.i ("MyActivity", "MyClass.getView() - получить номер позиции" + position); 
LogCat выведет что-то вроде:
Код: [ Загрузить ] [ Скрыть ]
  1. I / MyActivity (1557): MyClass.getView () - получить номер позиции 1 

Использование LogCat
________________________________________
Вы можете использовать LogCat изнутри DDMS или вызывать ее из ADB-шелл. Для получения дополнительной информации о том, как использовать в LogCat DDMS см. Using DDMS. Для запуска LogCat через ADB-шелл используйте следующее:
Код: [ Загрузить ] [ Скрыть ]
  1. [adb] LogCat [< опции >]  ...  [<filter-spec>]  ... 
Вы можете использовать команду LogCat с компьютера разработки или из удаленного adb shell в эмуляторе/экземпляра устройства. Для просмотра выходных логов в компьютере разработчика, вы используете
Код: [ Загрузить ] [ Скрыть ]
  1. $ adb logcat 
и из удаленного adb shell вы используете
Код: [ Загрузить ] [ Скрыть ]
  1. # 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":
Код: [ Загрузить ] [ Скрыть ]
  1. I/ActivityManager (585): Starting activity: Intent { action=Android.intent.action...} 
Для уменьшения вывода логов до приемлемого уровня, можно ограничить вывод, используя filter expressions. Фильтр выражений позволяет указать системе комбинации тегов-приоритета, которые вам нужны - система подавляет другие сообщений, кроме указанных тегов.
Выражение фильтра имеет следующий формат tag:priority..., где tag указывает интересующий тег и priority указывает на минимальный уровень приоритета рапортовать по этому тегу. Сообщения тега этого уровня или приоритетом выше записываются в журнал. Вы можете указать любое количество tag:priority спецификаций в одном выражении фильтра. Набор спецификаций разделяется пробелами.
Вот пример фильтра, который подавляет все сообщения, за исключением с тегом "ActivityManager", с приоритетом "Info" или выше, и все сообщения, с тегом "MyApp", с приоритетом "Debug" или выше:
Код: [ Загрузить ] [ Скрыть ]
  1. adb logcat ActivityManager:I MyApp:D *:S 
Последний элементо в этом выражении *: S задает уровень приоритета для всех тегов " silent ", обеспечивая тем самым отображение только сообщений со словами " View " и "MyApp". Использование *:S является отличным способом чтобы убедиться, что вывод логов ограничен фильтрами, которые явно указаны - это позволяет вашим фильтрам служить "белым списком" для вывода логов.
Следующее выражение фильтра показывает все сообщения, с уровнем приоритета "warning" и выше на все теги:
Код: [ Загрузить ] [ Скрыть ]
  1. adb logcat *:W 
Если вы используете LogCat с компьютера разработчика (в противовес запуску его на удаленном adb shell), вы также можете установить фильтр по умолчанию путем экспорта значения переменной среды ANDROID_LOG_TAGS:
Код: [ Загрузить ] [ Скрыть ]
  1. export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S" 
Обратите внимание, что ANDROID_LOG_TAGS фильтр не экспортируется в эмулятор/устройство, если вы работаете с LogCat из удаленного шелла или используете adb shell logcat.

Контроль формата вывода логов
Лог-сообщения содержат ещё ряд полей метаданных в дополнение к полям тег и приоритет. Вы можете изменить формат вывода логов, чтобы они отображали определенное поле метаданных. Чтобы сделать это, используйте опцию –V и укажите один из поддерживаемых форматов вывода, перечисленных ниже.
• brief - отображает приоритет/тег и PID процесса, который послал сообщение (формат по умолчанию)
• process - только PID
• tag - отображает приоритет/тег
• raw - отображает лог как raw, без других полей метаданных
• time - отображает дату, времени вызова, приоритет/тег, и PID процесса, который послал сообщение
• threadtime - отображает дату, времени вызова, приоритет, тег и PID и TID потока, который послал сообщение
• long - отображение всех полей метаданных и отдельно сообщения с пустыми строками.

При запуске LogCat вы можете указать выходной формат, который вы хотите с помощью опции -v:
Код: [ Загрузить ] [ Скрыть ]
  1. [adb] logcat [- v <format>] 
Вот пример, который показывает, как создавать сообщения в формат вывода thread:
Код: [ Загрузить ] [ Скрыть ]
  1. adb logcat - v thread  
Обратите внимание, что можно указать только один выходной формат опцией –v.

Просмотр альтернативных буферов логов
Система регистрации Android хранит несколько кольцевых буферов логов, и не все из логов отправляются в кольцевой буфер по умолчанию. Для отображения дополнительных сообщений журнала, вы можете запустить LogCat команду с опцией –b для просмотра альтернативного кольцевого буфера. Вы можете просмотреть любой из этих альтернативных буферов:
• radio - просмотр буфера, содержащего логи радио/телефонии
• events - просмотр буфера, содержащего сообщения, связанных с событиями
• main - просмотр основного лог-буфера (по умолчанию)

Использование опции -b:
Код: [ Загрузить ] [ Скрыть ]
  1. [abp] logcat [-b <buffer>] 
Вот пример того, как просмотреть лог буфер, содержащий радио- и телефонные логи:
Код: [ Загрузить ] [ Скрыть ]
  1. abp logcat -b radio 

Просмотр stdout и stderr
________________________________________
По умолчанию, система Android посылает stdout и stderr (System.out и System.err) вывод на /Dev/null. В процессах, которые управляют Dalvik VM, у вас есть система записи копии вывода в лог-файл. В этом случае система записывает сообщения в лог с помощью лог-тегов stdout и stderr с приоритетом I.
Для такого вывода логов вы останавливаете запущенный эмулятор/устройство, а затем используете шелл-команду SetProp, чтобы перенаправить вывод. Вот как это делается:
Код: [ Загрузить ] [ Скрыть ]
  1. $ adb shell stop 
  2. $ adb shell setprop log.redirect-stdio true 
  3. $ adb shell start 
Система сохраняет эту настройку, пока вы не остановите эмулятор/устройство. Для использования настройки по умолчанию на эмуляторе/устройстве вы можете добавить запись в /data/local.prop на устройстве.

Отладка веб-приложений
________________________________________
Если вы разрабатываете веб-приложение для Android, вы можете отлаживать JavaScript с помощью консоли JavaScript APIs, выводя сообщения LogCat. Для получения дополнительной информации см. Debugging Web Apps.

_________________
Использование DDMS
Чтение и запись логов (LogCat)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB