Logcat позволяет фильтровать журналы, но работает он следующим образом: вы определяете фильтры, а logcat отображает только сообщения, соответствующие фильтрам. Но есть ли способ отобразить все журналы, ЗА ИСКЛЮЧЕНИЕМ некоторых тегов, определенных фильтрами?
123
Ответы:
Если вы используете,
adb logcat
вы можете передать его через grep и использовать его инвертированное сопоставление: Из справочной страницы grep :Например:
Вы можете расширить это, используя регулярные выражения .
Вот пример такого выражения:
Это будет проверять наличие любого из указанных, тогда grep не будет их перечислять.
источник
grep
- это стандартная команда unix. Для окон вы можете попробоватьfind /V "notshownmatchpattern"
. PS Судя по всему, в оболочке adb тоже естьgrep
. Но это не то же самое, что стандартный unixgrep
!Вы можете сделать это из DDMS Monitor (а также Eclipse или Android Studio) с полем ввода регулярного выражения и отрицательными утверждениями упреждающего просмотра , например, я исключаю много шума из моего журнала следующим образом:
(Тег: не является частью регулярного выражения, но указывает LogCat применять регулярное выражение только к полю тега. Если вы используете этот трюк в сохраненном фильтре, поместите только регулярное выражение в поле ввода «Тег». , и опустите префикс "tag:")
На панели монитора logcat Android Studio вы можете настроить для этого сохраненный фильтр, открыв раскрывающийся список в правом верхнем углу (в нем может быть выбрано «Показать только выбранное приложение») и выбрать «Изменить конфигурацию фильтра». Создайте новый фильтр logcat и поместите
^(?!(WifiMulticast
... и т. Д.))
в поле Тег журнала с установленнымRegex
флажком.источник
Если вы хотите исключить или отфильтровать определенные сообщения по имени тега в Android Studio, перейдите в окно LogCat => Изменить конфигурацию фильтра и введите следующее в поле «По тегу журнала (регулярное выражение):»
Обратите внимание, что пробелов нет, это важно
источник
^(?!tag1)
^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Это исключит тексты с содержимым WindowManager, dalvik, ...
tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Это исключит теги WindowManager, dalvik, ... из logcat
источник
^(?!(WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc*))
Из оболочки вы можете использовать такую команду, как:
который будет включать в себя все журналы , кроме тех , с
AlarmManagerService
иPowerManagerService
тегами.(Это
:S
означает «тихий», что означает, что для этих тегов ничего не будет печататься;:V
означает «подробный», что означает, что все будет напечатано для всех других тегов. В документации Android для logcat есть более подробная информация о других параметрах, которые вы можете использовать в фильтры.)Вы также можете использовать
ANDROID_LOG_TAGS
переменную окружения для настройки фильтров по умолчанию, например (в bash):источник
S
означает «тихий». Я обновил ответ, чтобы объяснить это, как вы предлагаете.Комбинируйте как положительный, так и отрицательный просмотр вперед для более эффективной фильтрации.
Пример:
Теги в первых вложенных скобках включены.
Теги во второй исключены.
источник
Вот список фильтров, которые я использовал для игнорирования системных журналов Samsung . будет работать и с другими устройствами.
источник
Легкий способ сделать это - просто отфильтровать только те теги, которые вы хотите видеть.
Поднимет только эти теги.
источник
В представлении Eclipse Logcat такой возможности нет. Однако вы можете использовать уровень журнала, чтобы исключить любое сообщение, уровень журнала которого слишком низкий. E. g. установка его на I (nfo) не отображает сообщения D (ebug) и (V) erbose.
источник