Я заметил, что когда я использую Logcat с Eclipse с ADT для Android, я получаю сообщения и от многих других приложений. Есть ли способ отфильтровать это и показать только сообщения из моего собственного приложения только.
android
android-logcat
Винод
источник
источник
Ответы:
Имена пакетов гарантированно будут уникальными, поэтому вы можете использовать
Log
функцию с тегом в качестве имени вашего пакета, а затем фильтровать по имени пакета :ПРИМЕЧАНИЕ: Начиная с Build Tools 21.0.3 это больше не будет работать, поскольку TAGS ограничен 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
Или, если вы используете
System.out.print
для отправки сообщений в журнал, вы можете использовать,adb -d logcat System.out:I *:S
чтобы показать только вызовы System.out.Вы можете найти все уровни журналов и дополнительную информацию здесь: https://developer.android.com/studio/command-line/logcat.html
http://developer.android.com/reference/android/util/Log.html
РЕДАКТИРОВАТЬ: Похоже, я немного подскочил пистолет и только что понял, что вы спрашивали о logcat в Eclipse. То, что я написал выше, для использования logcat через adb из командной строки. Я не уверен, что те же фильтры переносятся в Eclipse.
источник
logcat <your package name>:<log level>
ответа предполагает, что можно использовать имя пакета в качестве допустимого фильтра. Мне нужно было прочитать ответ дважды, чтобы понять, что он на самом деле говорит, поэтому я рекомендую просто изменить первую строку на что-то вроде «logcat <tag>:<log level>
где<tag>
может быть имя вашего пакета, если вы также использовали его в качестве тега вandroid.util.Log
»Linux и OS X
Используйте ps / grep / cut, чтобы получить PID, затем grep для записей logcat с этим PID. Вот команда, которую я использую:
(Вы можете усовершенствовать регулярное выражение, чтобы избежать теоретической проблемы несвязанных строк журнала, содержащих одинаковое число, но для меня это никогда не было проблемой)
Это также работает при сопоставлении нескольких процессов.
Windows
На Windows вы можете сделать:
источник
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
adb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
adb logcat | findstr com.example.package
adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`
Начиная с Android 7.0, в logcat есть опция --pid filter и доступна команда pidof, замените com.example.app на имя вашего пакета.
(терминал Ubuntu / С Android 7.0)
или
Для получения дополнительной информации о команде pidof:
https://stackoverflow.com/a/15622698/7651532
источник
grep
иfindstr
варианты, но они только фильтрации журналов с некоторого значения за исключением большого количества сообщений. Ваш ответ реальный, покажите весь журнал о приложении, не исключая сообщения журнала из других библиотек. Это как в Android Studio текущий фильтр «Показывать только выбранные». Спасибо!Добавить фильтр
Укажите имена
Выберите свой фильтр.
источник
Для меня это работает в Mac
Terminal
Получил в папку, где у вас есть,
adb
затем введите команду ниже в терминалеЗдесь он будет фильтровать все журналы
MyTAG
иAndroidRuntime
источник
Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");
2) войти в DEBUG на Android$ adb -s RKSCWSOV5SAIEUSC shell;
3)$ logcat MyTAG:V AndroidRuntime:E *:S
4) теперь он будет показывать подробный MyTAG и ошибки AndroidRuntimeОбновление 17 мая
Прошло несколько лет, и все изменилось. И Eclipse больше официально не поддерживается. Итак, вот еще два современных подхода:
1. Android Studio
В
Android monitor
наборе инструментов вы можете фильтровать logcat perdebuggable process
. Обычно, когда вы разрабатываете приложение, это отлаживаемый процесс. Время от времени у меня возникают проблемы с этим, и я делаю следующее:Tools
->Android
->Enable ADB Integration
.Если он уже был включен, выключите его, а затем снова включите
Отключите и снова подключите мобильное устройство.
Есть также варианты фильтрации через регулярные выражения и уровень отладки.
2. LogCat-цвет
Это хорошая оболочка Python,
adb logcat
если вы хотите использовать терминальное решение. Хорошо, что вы можете сохранить несколько конфигураций и просто использовать их повторно. Фильтрацияtags
довольно надежна. Вы также можете фильтровать,package
чтобы видеть журналы только одного или нескольких приложений, но вы запускаетеlogcat-color
прямо перед запуском приложения.Старый ответ:
Кажется, я не могу комментировать предыдущие ответы, поэтому я опубликую новый. Это комментарий к ответу Тома Малкахи , который показывает, как должна измениться команда, чтобы она работала на большинстве устройств, поскольку
adb shell ps
столбец PID является переменным.ПРИМЕЧАНИЕ . Команда ниже работает для случаев, когда вы подключили много устройств. Так
device id
нужно. В противном случае вы можете просто опустить скобки '[', ']'1. Чтобы узнать столбец pid, введите:
Теперь запомните номер столбца для PID. Нумерация начинается с
1
.2. Затем введите следующее:
Просто поместите колонку, в которой вы запомнили
PUT_COLUMN_HERE
, например,$5
Предостережение
Каждый раз, когда вы перезапускаете свое приложение, вы должны перезапускать 2-ю команду, потому что приложение получает новый PID из ОС.
источник
Это работает для меня в Git Bash:
источник
поместите это в applog.sh
затем:
applog.sh com.example.my.package
источник
log.d("TAG", "multine\nlog")
например):adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/ { N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e ' }' | grep -v '^$'
- Я пропустилtr
, я предполагаю, что это необходимо в системах Windows, и яAPPID
заключил в круглые скобки, чтобы разрешить несколько пидов (разделенных|
) ,Это работает для меня с отладкой USB:
Подключите устройство и используйте:
adb shell
Используйте logcat при подключении:
logcat | grep com.yourapp.packagename
источник
Если вы используете Android Studio, вы можете выбрать процесс, из которого вы хотите получать logcats. Вот скриншот.
источник
Log cat has a new option (on by default) which creates an application filter automatically such that only the launched application's output is shown
Я написал сценарий оболочки для фильтрации logcat по имени пакета, который я считаю более надежным, чем использование
Он использует / proc / $ pid / cmdline, чтобы выяснить фактический pid, а затем выполнить grep для logcat.
https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a
источник
Ubuntu: adb logcat -b all -v color --pid = `adb shell pidof -s com.packagename` С цветом и непрерывным журналом приложения
источник
adb shell pidof ...
бит у меня не сработал, поэтому яadb shell
подключился к устройству и запустил тамtop
скопированный PID для моего приложения, а затем заменил его в своей командеpgrep
вместо пидофADT v15 для Eclipse позволяет вам указать имя приложения (которое фактически является значением пакета в вашем androidmanifest.xml).
Мне нравится возможность фильтровать по приложениям, но в новом logcat есть ошибка с автопрокруткой. Когда вы прокручиваете немного вверх, чтобы просмотреть предыдущие журналы, он автоматически прокручивается назад к основанию через пару секунд. Кажется, что прокрутка на полпути вверх по бревну не дает ему спрыгнуть назад, но это часто бесполезно.
РЕДАКТИРОВАТЬ: я пытался указать фильтр приложения из командной строки - но не повезло. Если кто-то выяснит, ИЛИ как остановить автопрокрутку, пожалуйста, дайте мне знать.
источник
Использование командной строки Windows:
adb logcat -d | findstr <package>
.* Это было впервые упомянуто jj_ , но мне понадобилось много времени, чтобы найти его в комментариях ...
источник
В качестве варианта можно использовать сторонний скрипт PID Cat от Jake Wharton. Этот скрипт имеет два основных преимущества:
Из документации:
Выход выглядит как
источник
Я не уверен, что есть способ видеть только системные сообщения, касающиеся вашего приложения, но вы можете фильтровать по строке. Если вы ведете журнал в программе, вы можете просто включить определенное уникальное ключевое слово и выполнить фильтрацию по этому слову.
источник
Попробуйте: Окно -> Настройки -> Android -> LogCat. Измените в поле «Показать представление logcat, если ...» значение «VERBOSE». Это помогло мне.
источник
Если вы используете Eclipse , нажмите зеленый знак + в окне logCat ниже и введите имя вашего пакета (com.example.yourappname) в поле By Application Name . Кроме того, выберите любое удобное для вас имя в поле Имя фильтра и нажмите ОК. Вы увидите только сообщения, относящиеся к вашему приложению, когда только что добавленный фильтр выбран на левой панели logCat.
источник
Дайте вашему журналу имя. Я назвал мой "Вава".
В Android Studio перейдите в Android-> Изменить настройки фильтра.
Затем введите имя, которое вы дали журналы. В моем случае это называется "вава". Вот несколько примеров типов фильтров, которые вы можете использовать. Вы можете фильтровать по System.out, System.err, журналам или именам пакетов:
источник
Это, наверное, самое простое решение.
Помимо решения от Tom Mulcahy, вы можете еще больше упростить его, как показано ниже:
Использование легко, как обычный псевдоним. Просто введите команду в вашей оболочке:
Настройка псевдонима делает его удобным. И регулярное выражение делает его надежным для многопроцессорных приложений, если вы заботитесь только о главном процессе.
Конечно, вы можете установить больше псевдонимов для каждого процесса, как вам угодно. Или используйте решение Hegazy. :)
Кроме того, если вы хотите установить уровни ведения журнала, это
источник
В Windows 10, с использованием Ionic, мне прекрасно работало объединение findstr с INFO: CONSOLE, генерируемым всеми сообщениями приложения. Итак, моя команда в командной строке:
источник
Я попытался использовать ответ Тома Малкахи, но, к сожалению, он не работал для приложений с несколькими процессами, поэтому я редактировал его в соответствии со своими потребностями.
источник
Используйте
-s
!Источник
источник
В дополнение к ответу Тома Малкахи , если вы хотите фильтровать по PID на консоли Windows, вы можете создать небольшой командный файл, например:
источник
Это, очевидно, вопрос, направленный на использование Logcat извне устройства разработчика, однако, если вы хотите отобразить вывод Logcat на устройстве (программно), вам просто нужно это:
В
*:D
конце отфильтровывается каждое сообщение ниже уровня журнала отладки, но вы можете это пропустить.Чтобы направить вывод, скажем, в TextView, см., Например, здесь .
источник
Теперь можно ввести тег: nameofthetag или app: nameoftheapp для фильтрации без добавления новых фильтров на панель сохраненных фильтров.
источник
В intelliJ (и, возможно, также в eclipse) вы можете фильтровать вывод logcat по текстовому веб-представлению , поэтому он печатает практически все, что производит phonegap
источник
Еще один вариант Гавриэля
applog.sh
с поддержкой нескольких устройств и приложений с несколькими процессами:Использование:
applog.sh com.example.my.package [-s <specific device>]
источник
В Linux это работало для меня:
источник