Logcat reader как пользоваться на андроиде

Обновлено: 07.07.2024

Для решения проблем с мобильным приложением желательно узнать, что происходило в системе в момент возникновения ошибки. Это можно узнать из системного журнала — лога LogCat.

Способ получения записей в журнале зависит поставленной задачи и версии Android. Мы рассмотрим два популярных способа.

Разделы

Меню «Для разработчиков»

Для выполнения действий из этой статьи нам нужно получить доступ к меню «Для разработчиков»:

  1. Перейдите в настройки мобильного устройства и выберите пункт «О телефоне».
  2. Найдите информацию о номере сборки и нажмите не менее семи раз подряд на эту строку.

После этого в настройках устройства появится пункт «Для разработчиков».

Получение отчета об ошибке

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

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

Формируем отчет об ошибке:

Полученный файл отправьте в наш отдел технической поддержки вместе с описанием действий, при которых возникает ошибка.

Запрос отчета об ошибке

Выбор детализации отчета

Уведомление о готовности отчета. Нажмите на него

Получение лога LogCat через ADB

Если у вас в меню нет пункта «Отчет об ошибке» или требуется получить записи системного журнала — это можно сделать с помощью Android Debug Bridge, ADB.

Для этого нам понадобится телефон, USB кабель и компьютер.

Подключение устройства к компьютеру

Перед подключением устройства нам нужно разрешить в его настройках отладку по USB:

  1. Для этого переходим в меню «Для разработчиков» и ставим флажок в пункте «Отладка по USB».
  2. После включения отладки подключите устройство к компьютеру и на запрос системы Android о доверии к компьютеру ответьте «Доверять».

Загружаем и устанавливаем Minimal ADB

Minimal ADB можно загрузить по прямой ссылке с нашего сайта. Загрузить Minimal ADB 1.4.3, ZIP 1 Мб.

После загрузки распакуйте архив и запустите файл «minimal_adb_fastboot_v1.4.3_setup.exe». Для установки потребуются права администратора Windows. Можете установить с параметрами по умолчанию — это сэкономит ваше время.

Запуск записи лога

После установки будет запущена консоль Android Debug Bridge. В нем нужно ввести команду записи лога и нажать «Enter». Проверьте, что пользователь имеет право на запись в папку, куда будет сохранен файл. Или запустите ADB от имени администратора.

Если после установки консоль ADB не запустилась или вы ее закрыли, то всегда можно открыть ее с помощью ярлыка на рабочем столе «Minimal ADB and Fastboot». Посмотреть внешний вид ярлыка.

Консоль ADB. Мигающий курсор и отсутствие ошибок, это признак записи лога в файл

Воспроизведение ошибки и окончание записи

После ввода команды, ADB будет записывать в указанный файл все события в системе Android. Чтобы зафиксировать ошибку, ее нужно воспроизвести еще раз.

Когда ошибка произошла, перейдите в консоль ABD и нажмите сочетание клавиш Ctrl+C — это остановить запись лог-файла.

Консоль ADB. Запись лога завершена.

Отправка файла

После окончания записи упакуйте полученный файл в архив и отправьте в нашу техническую поддержку с описанием условий возникновения ошибки.

Пример записанного файла

Для примера мы разместили здесь несколько строк из записанного файла лога LogCat.

Как я могу фильтровать вывод Android logcat по приложению? Мне это нужно, потому что, когда я подключаю устройство, я не могу найти выход, который я хочу из-за спама от других процессов.

adb logcat ActivityManager:I MyApp:D *:S

  • V-подробный (самый низкий приоритет)
  • D-Debug
  • I-Info
  • W - Предупреждение
  • E-Error
  • F-Fatal
  • S-Silent (высший приоритет, на котором никогда ничего не печатается)

Привет я получил решение с помощью этого:

вы должны выполнить эту команду из терминала. Я получил результат,

Если бы вы могли жить с тем, что вы входите в систему из дополнительного окна терминала, я мог бы рекомендовать pidcat (возьмите только имя пакета и отслеживает изменения PID.)

  • MyActivity1
  • MyActivity2
  • MyActivity3
  • MyService
  • MyAppActivity1
  • MyAppActivity2
  • MyAppActivity3
  • MyAppService

положите это на applog.sh

затем: applog.sh com.example.my.package

когда мы получим какую-то ошибку из нашего приложения, Logcat автоматически покажет фильтр сеанса. Мы можем создать фильтр сеанса самостоятельно. Просто добавьте новый фильтр logcat, заполните форму имя фильтра. Затем заполните по имени приложения с помощью пакета приложений. (например : моя заявка "Адукан" и пакет "ком.адукан", поэтому я заполнить имя приложения, пакет приложений "ком.адукан")

enter image description here

Если вы используете Eclipse вы можете фильтровать по приложению так же, как это возможно с Android Studio, как представлено shadmazumder.

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

затем вы добавляете имя в фильтр и, в на имя приложения вы указываете пакет вашего приложения.

на моем ноутбуке Windows 7 я использую ' adb logcat | find "com.example.name "' для фильтрации вывода logcat, связанного с системной программой, от остальных. Выходные данные программы logcat передаются по конвейеру в команду find. Каждая строка, которая содержит 'com.example.name' выводится в окно. Двойные кавычки являются частью команды find.

чтобы включить вывод из моих команд журнала, я использую имя пакета, здесь "com.example.name" , как часть первого параметра в моем журнале команд, таких как это:

Примечание: мой телефон Samsung Galaxy выдает намного меньше выходных данных, связанных с программой чем эмулятор 17 уровня.

Да, теперь вы получите его автоматически.
Обновление до AVD 14, где logcat будет автоматически session filter
где это фильтр войти в вас конкретное приложение (пакет)

слева в представлении logcat у вас есть окна" сохраненные фильтры". Здесь можно добавить новый фильтр logcat по имени приложения (например, com.ваш.пакет)

Что я обычно делаю-это отдельный фильтр на PID что было бы эквивалентно текущей сессии. Но, конечно, он меняется каждый раз, когда вы запускаете приложение. Не хорошо, но это единственный способ иметь всю информацию о приложении, независимо от тега журнала.

Как правило, я делаю эту команду "adb shell ps" в приглашении (позволяет видеть запущенные процессы), и можно обнаружить pid приложения. С этим pid в руках перейдите в Eclipse и напишите pid:XXXX (XXXX-это приложение pid), затем выход журналов фильтруется этим приложением.

или, проще говоря. в представлении logcat на Eclipse найдите любое слово, связанное с вашим желаемым приложением, откройте pid, а затем выполните фильтр по pid "PID:XXXX".

Я использую для хранения его в файле:

Это, вероятно, самое простое решение.

поверх решения от Tom Mulcahy, вы можете еще больше упростить его, как показано ниже:

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

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

из coz вы можете установить больше псевдонимов для каждого процесса, как вам угодно. Или использовать решение Хегази. :)

кроме того, если вы хотите установить уровень ведения журнала, это

вы можете достичь этого в Eclipse logcat, введя следующее в поле поиска.

com.образец.приложение-имя пакета приложения.

мой .функция файл, это может быть любой использовать

использование:

$ logcat-myapp

$ logcat com.андроид.что-то.приложение

enter image description here

В Android Studio в окне монитора Android: 1. Выберите приложение, которое вы хотите отфильтровать 2. Выберите "Показывать только выбранное приложение"

используйте первый параметр в качестве имени приложения. Бревно.d ("your_Application_Name", "message");

и в LogCat: создать фильтр - - - > имя фильтра & по тегу журнала: равно 'your_Application_Name' он создаст новую вкладку для вашего приложения.

используйте полные имена классов для тегов журнала:

затем

затем используйте grep

приложение Android Device Monitor, доступное в sdk / tools / monitor, имеет опцию logcat для фильтрации "по имени приложения", где вы вводите имя пакета приложения.

на Linux / Un*X / Cygwin вы можете получить список всех тегов в проекте (с добавлением :V после каждого) с этой командой (разделить, потому что читаемость):

он охватывает теги, определенные обоими способами определения тегов:

а затем просто использовать его для adb logcat.

Я нашел приложение в магазине, которое может показать имя / процесс журнала. Так как Android Studio просто ставит (?) в журналах, генерируемых другими процессами, мне было полезно знать, какой процесс генерирует этот журнал. Но все же в этом приложении отсутствует фильтр по имени процесса. Вы можете найти его здесь.

добавить пакет приложения в "имя фильтра", нажав на кнопку "+" в левом верхнем углу в logcat.

для фильтрации журналов в командной строке используйте следующий скрипт

adb logcat com.yourpackage: v

Подробное объяснение команды Android Logcat: Перевести Включение ведения журнала logcat

Подробное объяснение команды Android Logcat

Система Android LOG обеспечивает функцию сбора и просмотра результатов отладки системы. Вывод LOG различных приложений и других частей системы хранится в некоторых кольцевых буферах, которые можно просматривать и фильтровать с помощью команды logcat.

Используйте команду logcat

Вы можете использовать команду logcat для просмотра и управления содержимым системного журнального буфера, обычно используемого:

[adb] logcat [<option>] . [<filter-spec>] .

В следующих разделах этого раздела объясняются параметры фильтрации и команд. Полный обзор опций см.список параметров команды logcat

Вы можете использовать команду logcat на своем компьютере или через удаленную оболочку adb, запущенную на эмуляторе / устройстве. Просмотрите вывод LOG на вашем компьютере:

Через удаленную оболочку adb вы можете сделать это:

Фильтр вывода журнала

Информация журнала Android имеет тег и его приоритет (приоритет).

· Метка LOG - это краткое описание, указывающее, какой компонент системы возникает, что указывается при записи LOG. (Например: «Просмотр» означает просмотр метки системы ПРОСМОТР).

· Приоритеты располагаются в порядке убывания приоритета:

o V - подробный (самый низкий приоритет)

o S - Без звука (высший приоритет, без вывода)

При запуске logcat вы можете увидеть список тегов и уровень приоритета logcat в первых двух столбцах информации, которые помечены как <priority> / <tag>.

Ниже приведен пример вывода logcat с приоритетом «I» и меткой «ActivityManage»:

I/ActivityManager( 585): Starting activity: Intent

Чтобы обеспечить управляемый уровень вывода LOG, вы также можете использоватьфильтрЧтобы ограничить вывод LOG, фильтры могут помочь показать только информацию о комбинации приоритета тега, которая вас интересует, при этом скрывая другую информацию.

Оператор фильтра описывается в формате тег: приоритет . Здесь тег означает интересующий тег, приоритет означает указанный тег отчета.самый низкийсорт. Информация, содержащая указанный выше тег, или информация выше указанного приоритета, записывается в ЖУРНАЛ. Вы можете предоставить несколько объявлений tag: priority в выражении фильтра, разделенных пробелами между этими объявлениями.

Ниже приведен пример выражения фильтра. Этот пример означает, что вся остальная информация журнала не отображается, за исключением тех, которые имеют метку «ActivityManager» и приоритет «Информация» или выше, а также те, которые имеют метку «MyApp» и приоритет «Debug» или выше. Информация.

adb logcat ActivityManager:I MyApp:D *:S

Последний элемент *: S в приведенном выше выражении должен установить приоритет всех тегов на «без звука», чтобы отображались только журналы «Просмотр» и «Мое приложение». Использование *: S - отличный способ гарантировать, что вывод журнала ограничен выражением фильтра, которое вы явно указываете, - это делает ваш фильтр похожим на «белый список» в выводе журнала.

Следующий оператор фильтра отображает информацию журнала журнала с предупреждением приоритета или выше:

Если вы запускаете logcat на своем компьютере (по сравнению с удаленным запуском оболочки adb), вы также можете установить фильтр по умолчанию, указав параметр для переменной среды ANDROID_LOG_TAGS:

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

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

Формат вывода журнала управления

Помимо метки и приоритета, в информации журнала есть много других полей метаданных. Формат вывода журнала можно изменить, чтобы отображать определенные поля метаданных. Форматированный вывод, поддерживаемый следующим, может быть указан с помощью опции -v.

· Краткое - отобразить приоритет / тег и распечатать PID процесса LOG ((формат по умолчанию).

· Процесс - отображать только PID. .

· Тег - только отображение приоритета / тега.

Поток - отображение процесса: поток и приоритет / тег.

· Необработанные - отображение исходной информации журнала без отображения других полей метаданных.

· Время - отображение даты, времени возникновения, приоритета / тега и PID процесса печати журнала.

· Длинный - отображать все поля метаданных и информацию журнала, разделенные пустыми строками.

Когда logcat запущен, вы можете указать формат вывода с помощью опции -v:

[adb] logcat [-v <format>]

Ниже приведен пример журнала, созданного с использованием формата вывода потока:

adb logcat -v thread

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

Просмотр указанного буфера журнала

Система журналов Android имеет несколько кольцевых буферов, и не вся информация журнала выводится в кольцевой буфер по умолчанию. Чтобы увидеть информацию журнала других буферов, вам нужно запустить logcat с параметром -b. Посмотрите на другие кольцевые буферы. Эти буферы:

· Радио - просмотр информации в буфере, относящейся к беспроводной связи / телефону.

· События - просмотр буферов, связанных с событиями.

· Main - просмотр журнала в главном буфере (по умолчанию)

Как использовать параметр -b:

[adb] logcat [-b <buffer>]

В следующем примере показано, как просмотреть буфер LOG, содержащий информацию о радио и телефонии:

adb logcat -b radio

Просмотр stdout и stderr

По умолчанию система Android выводит stdout и stderr (System.out и System.err) в / dev / null. В процессе запуска Dalvik VM существует система, которая может создавать резервную копию вывода журнала. В этом случае система будет использовать stdout, stderr и приоритет I. для записи информации журнала.

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

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

Список параметров команды Logcat

Параметры

описание

Загрузите указанный буфер журнала для просмотра, например событие или радио. Значение по умолчанию - main. Специальная ссылкаПросмотр указанных буферов журнала.

Очистите весь журнал и выйдите.

Выведите LOG на экран и выйдите.

Запишите информацию журнала в <имя файла>. По умолчанию это стандартный вывод.

Распечатайте размер указанного буфера журнала и выйдите.

Установите максимальное количество журналов <count>, значение по умолчанию - 4, его нужно использовать с опцией -r.

Rotates записывает файл журнала каждый раз, когда выводит <kbytes>. Значение по умолчанию - 16, которое необходимо использовать с опцией -f.

Установите уровень фильтрации по умолчанию на беззвучный.

Наборы Задайте выходной формат журнала. По умолчанию используется краткий формат. Для получения дополнительных сведений о поддерживаемых форматах см.Формат вывода журнала управления.

В приложении давайте посмотрим на два эффекта редактирования в WORD:

имена пакетов гарантированно уникальны, поэтому вы можете использовать Log функция с тегом в качестве имени пакета, а затем фильтровать по имени пакета:

Примечание: начиная с Build Tools 21.0.3 это больше не будет работать, поскольку теги ограничены 23 символами или меньше.

Log.<log level>("<your package name>", "message");

adb -d logcat <your package name>:<log level> *:S

-d обозначает фактическое устройство и -e обозначает эмулятор. Если есть более 1 эмулятора запуск вы можете использовать -s emulator-<emulator number> (например, -s emulator-5558 )

пример: adb -d logcat com.example.example:I *:S

EDIT: похоже Я немного подскочил и просто понял, что вы спрашиваете о logcat в Eclipse. То, что я опубликовал выше, предназначено для использования logcat через adb из командной строки. Я не уверен, что те же фильтры в затмение.

Linux и OS X

используйте ps/grep / cut, чтобы захватить PID, а затем grep для записей logcat с этим PID. Вот команда, которую я использую:

(вы можете улучшить регулярное выражение, чтобы избежать теоретической проблемы несвязанных строк журнала, содержащих то же число, но это никогда не было проблемой для меня)

Это также работает при сопоставлении нескольких процессов.

на Windows вы можете сделать:

Add filter

enter image description here

enter image description here

для меня это работает в Mac Terminal
Попали в папку, где у вас есть adb затем введите команду ниже в terminal

здесь он будет фильтровать все журналы MyTAG и AndroidRuntime

прошло несколько лет, и все меняется. И Eclipse больше официально не поддерживается. Итак, вот еще два современных подхода:

1. Android Studio

enter image description here

В Android monitor toolbox, вы можете фильтровать logcat в debuggable process . Обычно при разработке приложения это отлаживаемый процесс. Время от времени у меня возникают проблемы с этим, и я делаю следующий:

Tools -> Android -> Enable ADB Integration .
Если он уже включен, выключите его, а затем снова включите

отключите и снова подключите мобильное устройство.

есть также опции для фильтрации через regex и уровень отладки

2. чтение logcat-цвет

это хорошая обертка python поверх adb logcat если вы хотите использовать Терминальные решения. Хорошо, что вы можете сохранить несколько конфигураций и просто использовать их повторно. Фильтрация по tags вполне надежна. Вы также можете фильтровать по package чтобы увидеть журналы только одного или нескольких приложений, но вы начинаете logcat-color прямо перед запуском приложения.

кажется, что я не могу комментировать предыдущие ответы, поэтому я опубликую новый. Это комментарий к Том Малкахи's ответ, который показывает, как команда должна измениться, чтобы работать на большинстве устройств, так как adb shell ps столбец PID является переменным.

Примечание: команда ниже работает для случаев, когда вы подключили много устройств. Так что это. В противном случае вы можете просто опустить скобки '[', ']'

1. Чтобы узнать столбец pid, введите:

теперь запомните номер столбца для PID. Нумерация начинается с 1 .

2. Затем введите следующий:

просто поместите столбец, который вы запомнили в PUT_COLUMN_HERE , например,

предостережение

каждый раз, когда вы повторно запускаете приложение, вы должны повторно запустить 2-ю команду, потому что приложение получает новый PID из ОС.

Читайте также: