Подтвердить что ты не робот

Как исключить определенные сообщения по имени TAG с помощью Android adb logcat?

Logcat позволяет фильтровать журналы, но он работает следующим образом: вы определяете фильтры, а logcat отображает сообщения, соответствующие фильтрам. Но есть ли способ отображать все журналы? ИСКЛЮЧИТЬ некоторые TAG, определенные фильтрами?

4b9b3361

Ответ 1

Если вы используете adb logcat, вы можете передать его через grep и использовать его инвертированное соответствие: Из grep manpage:

v, -invert-match         Инвертируйте смысл соответствия, чтобы выбрать несогласованные строки.

Например:

$adb logcat | grep --invert-match 'notshownmatchpattern' 

Вы можете расширить это, используя регулярные выражения.

Вот пример такого выражения:

"/^(?:emails|tags|addresses)"

Это будет проверять, чтобы любое из данных происходило, grep не перечислил их.

Ответ 2

Вы можете сделать это изнутри DDMS Monitor (а также Eclipse или Android Studio) с полем ввода регулярных выражений и отрицательные ожидания вперед, например, я исключаю много шума из своего журнала со следующим:

tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))

( "tag:" не является частью регулярного выражения, но сообщает LogCat применять только к регулярному выражению в поле "Тег". Если вы используете этот трюк в сохраненном фильтре, тогда просто установите регулярное выражение в "тег" "и опустить префикс" tag: ")

В панели мониторинга logcat Android Studio вы можете настроить для этого сохраненный фильтр, открыв раскрывающийся список в правом верхнем углу (может быть выбран "Показать только выбранное приложение" ) и выбрать "Редактировать конфигурацию фильтра". Создайте новый фильтр logcat и поместите ^(?!(WifiMulticast... и т.д. )) в поле "Журнал тегов" с флажком Regex.

Ответ 3

Если вы хотите исключить или фильтровать определенные сообщения по имени тега в студии Android, перейдите в окно LogCat window = > Edit Filter и введите в разделе "Tag Tag (regex)" следующее: "

^(?!(tag1|tag2|tag3|tag4))

Обратите внимание, что нет пробелов, это важно

Ответ 4

В оболочке вы можете использовать команду:

adb logcat AlarmManagerService:S PowerManagerService:S *:V

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

(:S означает "silent", что означает, что для этих тегов ничего не будет напечатано, :V означает "verbose", что означает, что все будет напечатано для всех других тегов. Документация для Android для logcat содержит более подробную информацию о других параметрах, которые вы можете использовать в фильтрах.)

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

export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"

Ответ 5

^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$

Это исключает тексты, содержащие содержимое WindowManager, dalvik,...

tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$

Это исключает теги WindowManager, dalvik,... из logcat

Ответ 6

Объедините как положительные, так и отрицательные результаты для более мощной фильтрации.

Пример:

(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))

Включены теги в первых вложенных круглых скобках.

Теги во втором исключены.

Ответ 7

В представлении Eclipse Logcat нет такой опции. Однако вы можете использовать уровень журнала, чтобы исключить любое сообщение, уровень журнала которого слишком низок. E. g. установка его на я (nfo) не отображает сообщения D (ebug) и (V) erbose.