Android как посмотреть logcat

Logcat

В Android SDK входит набор инструментов, предназначенных для отладки. Самый важный инструмент при отладке — это LogCat (очень красивое название, которое можно перевести как Логичный Кот). Он отображает сообщения логов (журнал логов), рассылаемые при помощи различных методов.

Рассмотрим на примере. Очень часто программисту нужно вывести куда-то промежуточные результаты, чтобы понять, почему программа не работает. Особо хитрые временно размещают на экране текстовую метку и выводят туда сообщение при помощи метода textView.setText(«Здесь был Васька»). Но есть способ лучше. В Android есть специальный класс android.util.Log для подобных случаев.

Класс android.util.Log позволяет разбивать сообщения по категориям в зависимости от важности. Для разбивки по категориям используются специальные методы, которые легко запомнить по первым буквам, указывающие на категорию:

  • Log.e() — ошибки (error)
  • Log.w() — предупреждения (warning)
  • Log.i() — информация (info)
  • Log.d() — отладка (degub)
  • Log.v() — подробности (verbose)
  • Log.wtf() — очень серьёзная ошибка! (What a Terrible Failure!, работает начиная с Android 2.2)
  • Log.meow() — когда жрать дадут? (MEOW!) Недокументированный метод, используйте на свой страх и риск. Работает не на всех устройствах

В первом параметре метода используется строка, называемая тегом. Обычно принято объявлять глобальную статическую строковую переменную TAG в начале кода:

Некоторые в сложных проектах используют следующий вариант, чтобы понимать, в каком классе происходит вызов:

Далее уже в любом месте вашей программы вы вызываете нужный метод журналирования с этим тегом:

Также используется в исключениях:

Пользователи не видят этот журнал. Но, вы, как разработчик, можете увидеть его через программу LogCat, доступный в Android Studio.

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

03-09 20:44:14.460 3851-3879 / ru.alexanderklimov.cat I/OpenGLRenderer : Initialized EGL, version 1.4

  • 03-09 20:44:14.460 Date/Time
  • 3851-3879 Process & Thread IDs
  • ru.alexanderklimov.cat Package name
  • I/OpenGLRenderer Tag
  • Initialized EGL, version 1.4 Message

Подобные длинные сообщения не всегда удобны для чтения. Вы можете убрать ненужные элементы. Для этого выберите значок LogCat Header в виде шестерёнки и уберите флажки у опций.

В LogCat вы можете отфильтровать сообщение по заданному типу, чтобы видеть на экране только свои сообщения. Для этого выберите нужный тип тега из выпадающего списка Verbose.

Типы сообщений можно раскрасить разными цветами через настройки File | Settings | Editor | Colors Scheme | Android Logcat.

Для отслеживания сообщений с заданным текстом введите в поле поиска нужную строку и нажмите Enter.

Также активно используйте варианты из других выпадающих списков. Например, выбирайте свой пакет из второй колонки, а в последней выбирайте Show only selected application. Для более точной настройки используйте Edit Fiter Configuration.

По умолчанию, окно LogCat выводится в нижней части студии. При желании, можно выбрать другие варианты через значок настроек окна.

LogCat также можно запустить из командной строки:

Параметры командной строки смотрите в документации.

Быстрое отключение журналирования

Настоятельно рекомендуется удалять все вызовы LogCat в готовых приложениях. Если проект очень большой и вызовы журналирования разбросаны по всем местам кода, то ручное удаление (или комментирование) становится утомительным занятием. Многие разработчики используют следующую хитрость — создают обёртку вокруг вызова методов LogCat.

Теперь остаётся только присвоить нужное значение переменной isDebug перед созданием готового apk-файла для распространения.

Читайте также:  Как разрабатывать для платформы android

Способ устарел. В 17-й версии Android Build Tools появился класс BuildConfig, содержащий статическое поле DEBUG. Можно проверить следующим образом:

Способ для продвинутых — например, требуется релиз с выводом в лог, или наоборот — debug с выключенным выводом. В этом случае можно создать собственный параметр и добавить его в секцию buildType gradle-файла:

В этом случае конфигурация releaseWithLog будет являться релизной сборкой с ведением логов. Естественно, в коде слегка поменяется проверка:

LogCat на устройстве

Попался в сети пример для просмотра сообщений LogCat на устройстве. С примером не разбирался, оставлю здесь на память.

Источник

Отладка приложения, Logcat

Для отладки приложений могут быть использованы всплывающие сообщения Toast. Однако это не эффективно. Android SDK включает средство просмотра отладочных сообщений Logcat. Оно не представляет сложности в освоении, поэтому широко используется программистами. Logcat позволяет просматривать отладочные сообщения не только разрабатываемого приложения, но и протоколируемые системой сообщения. Так, например, Garbage Collection периодически протоколирует свои сообщения о выполнении определенных действий («сборке мусора»), которые можно просматривать с помощью Logcat.

Для протоколирования сообщений необходимо использовать класс android.util.Log, позволяющий объединять сообщения по категориям. В следующем списке приведены методы класса Log, отсортированные по приоритету (важности) от высшего к низшему :

  • Log.e(String, String) — ошибка (error)
  • Log.w(String, String) — предупреждение (warning)
  • Log.i(String, String) — информация (info)
  • Log.d(String, String) — отладка (debug)
  • Log.v(String, String) — подробно (verbose)

Пример протоколирования

В качестве первого параметра методов Log используется текстовый тег (в примере переменная TAG). Если имеется необходимость в качестве тега сообщения определить наименование класса, то можно использовать следующее определение :

Панель Logcat в Studio

Logcat в среде разработки Android Studio располагается на отдельной вкладке, интерфейс которой представлен на следующем скриншоте. Слева вертикально располагаются кнопки управления сообщениями : очистка, перемещение по списку и т.д. Интерес представляет расположенный сверху справа компонент с выпадающим списком/меню. Если выбрать представленный на скриншоте пункт «Edit Filter Configuration», то можно определить фильтр сообщений, окно которого изображено на следующем скриншоте.

Фильтр сообщений

Logcat позволяет создать набор из нескольких фильтров. Достаточно только для каждого фильтра определить его наименование «Filter Name» и тег сообщений «Log Tag». Значение тега сообщения регистрируется классом android.util.Log.

Создадим простой пример протоколирования сообщений. В примере переопределим методы активности; в каждом методе будем протоколировать соответствующее сообщение.

Листинг активности

После старта приложения переходим на вкладку Locat и просматриваем список регистрируемых сообщений. Чтобы исключить сообщений системы установим фильтр State (справа, сверху). После этого можно менять ориентацию устройства (portrait => landscape => portrait) и контролировать список сообщений.

Протоколируемые сообщения можно просматривать не только с помощью Logcat. Они также попадают и на вкладку Run (см. следующий скриншот), но только с ме́ньшей функциональностью (отсутствует время регистрации, нельзя фильтровать и т.д.).

Формат сообщения

Logcat представляет сообщения в определенном формате : «date time PID-TID/package priority/tag: message». Поле даты (date) имеет формат MM-DD (месяц–день). Формат времени (time) HH24:MI:SS.SSS (часы:минуты:секунды.мс) включает милисекунды. Значения идентификаторов процесса PID и потока TID могут совпадать, если существует только один поток. Пример сообщения : 02-08 08:43:51.557 11608-43308/com.android.test.p08activity D/ACTIVITY_STATE: onStop.

Английский вариант полного описания Logcat.

Контроль протоколирования, BuildConfig

На этапе разработки приложения вывод отладочных сообщений, конечно же, полезен и необходим. Но что делать с этими сообщеними в готовом релизе? Если проект включает несколько модулей с различными тегами отладочных сообщений, то подготовка очередного релиза потребует определенных усилий с ручным удалением отладочных сообщений и комментариев. Иногда программисты используют условные выражения для вывода сообщений/комментариев. Например :

Читайте также:  Блютуз мышка для андроида

В этом примере сообщения будут протоколироваться в отдельной процедуре WriteLog только если IS_RELEASE=false. Одним движением (IS_RELEASE=true) можно блокировать протоколирование сообщений перед созданием готового apk-файла.

Начиная с 17-ой версии Android Build Tools в приложении автоматически формируется класс BuildConfig, содержащий статическое поле DEBUG с признаком отладочной сборки. При использовании данного класса перед протоколированием необходимо выполнить следующую проверку :

Объект BuildConfig можно расширить и включить в него свой «тег». Для этого необходимо внести соответствующие изменения в секцию buildType сборочного build.gradle файла проекта. Вот как может выглядеть секция buildType для тега ACTIVITY_STATE :

Конфигурация releaseWithLog будет релизной сборкой с протоколированием. Соответственно в коде приложения необходимо будет выполнять следующую проверку :

Источник

Android как посмотреть logcat

Многие владельцы Android хотят иметь систему настроенную под себя, со своим оформлением, но далеко не у всех получается с первого раза и все приходится делать заново, не узнав причину, ведь причина может быть самая элементарная: забыли добавить файл, ошиблись в каком то файле и случайно добавили лишний символ, а ведь если вы делали по большой инструкции, несколько часов или дней (в связи такой сложностью, у вас редко бывает время или вы не понимали на тот момент как надо было делать), а у вас ваше приложение не заработало, как-же быть тогда?
Есть одно решение, воспользоваться логом системы — LogCat.
Пользоваться им не очень сложно и делается он запросто, для начала нам необходимо скачать программу ADB, скачать вы её можете — здесь. Распаковываем скачанный архив в папку C:/adb. Открываем командную строку и пишем

и открываем ваше нерабочее приложение, если это статус-бар, то ждём когда он выдаст ошибку. В папке C:/adb будет лежать logcat.txt, его вы вылаживаете сюда или отправляете человеку, который вас попросил, ждёте ответа.

P.S. Тема была специальна создана, дабы всё время не описывать и объяснять, что да как делать.

Сообщение отредактировал WinKarbik — 14.08.14, 16:00

Там есть информация об этом, но возможно не так подробно.

Имеет смысл не распыляться по темам, а написать там, и попросить добавить в шапку той темы.

WinKarbik,

в этом случае, тема просто погрязнет в мусоре других тем, вот и всё.
Та же тема всегда наверху в том разделе.

Источник

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

Добро пожаловать на форум сайта

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

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

Сообщение =bor= » 11 сен 2013, 22:52

Система регистрации Android обеспечивает механизм для сбора и просмотра вывода отладочной информации. Logcat делает дамп логов системных сообщений, которые включают в себя такие вещи, как трассировки стека, когда эмулятор выдает сообщение об ошибке и сообщения, которые вы написали из вашего приложения, используя класс Log. Вы можете запустить LogCat через ADB или DDMS, которые позволяет читать сообщения в реальном времени.

Класс Log
________________________________________
Log – это логирующий класс, который можно использовать в коде для вывода сообщения в LogCat. Общие методы ведения журналов включают в себя:
• V (String, String) (подробно)
• D (String, String) (отладка)
• I (String, String) (информация)
• W (String, String) (предупреждение)
• е (String, String) (ошибка)

Читайте также:  Битва кланов для андроид

В следующей таблице описаны параметры командной строки LogCat :
-c Очистка журнала и выход
-d Дамп лога на экран и выход
-f Запись логов в . По умолчанию stdout.
-g Вывод размер указанного буфера журнала и выход
-n Устанавливает максимальное количество обновления логов из . Значение по умолчанию 4. Требует -R опцию
-r Обновление лог-файла каждые продукции. Значение по умолчанию равно 16. Требует F- опцию
-s Задает спецификацию фильтров по умолчанию в беззвучный режим
-v Устанавливает формат вывода сообщений логов. По умолчанию 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 и наблюдая первые два столбца каждого сообщения,

/ .
Вот пример из LogCat-вывода, который показывает, что сообщение относится к приоритету уровня «I» и тегу «ActivityManager»:

Обратите внимание, что ANDROID_LOG_TAGS фильтр не экспортируется в эмулятор/устройство, если вы работаете с LogCat из удаленного шелла или используете adb shell logcat.

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

При запуске LogCat вы можете указать выходной формат, который вы хотите с помощью опции -v:

Обратите внимание, что можно указать только один выходной формат опцией –v.

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

Использование опции -b:

Система сохраняет эту настройку, пока вы не остановите эмулятор/устройство. Для использования настройки по умолчанию на эмуляторе/устройстве вы можете добавить запись в /data/local.prop на устройстве.

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

Источник

Оцените статью