Как исключить определенные сообщения по имени TAG с помощью Android adb logcat? - PullRequest
119 голосов
/ 01 апреля 2011

Logcat позволяет фильтровать журналы, но работает так: вы определяете фильтры, а logcat отображает только те сообщения, которые соответствуют фильтрам.Но есть ли способ отобразить все журналы, КРОМЕ некоторых тегов, определенных фильтрами?

Ответы [ 9 ]

214 голосов
/ 30 января 2013

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

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

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

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

68 голосов
/ 14 апреля 2015

Если вы хотите исключить или отфильтровать определенные сообщения по имени тега в Android Studio, перейдите в окно LogCat => Изменить конфигурацию фильтра и введите следующее в поле «По тегу журнала (регулярное выражение):»

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

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

50 голосов
/ 01 апреля 2011

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

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

Например:

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

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

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

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

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

31 голосов
/ 07 февраля 2013

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

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

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

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

28 голосов
/ 04 июля 2013

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

adb logcat AlarmManagerService:S PowerManagerService:S *:V

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

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

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

export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"
16 голосов
/ 08 июня 2015

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

Пример:

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

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

Метки в секунду исключены.

2 голосов
/ 06 ноября 2018

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

Logcat -> Изменить конфигурацию фильтра -> Метка журнала

^(?!(PowerUI|PowerPlanningReceiver|BatteryService|SamsungPhoneWindowManager|MotionRecognitionService|AudioService|APM_AudioPolicyManager|SensorService|StorageManager|SignalClusterView|BatteryService|TelephonyManager|UsbDeviceManager|KeyguardUpdateMonitor|BatteryController|ActivityManager|LauncherAppsService|AppsModel|DataLoader|PackageManager|LauncherApps|ContactsImsCommon|ImsUtil|ImsSettingsProvider|DeviceConfigManager|WifiService|BackupManagerService|PersonaManagerService|DefaultDialerManager|ResourceType|NetworkUIGlobals|NetworkProxy|FileWriteThread|ReflectUtil|PhoneApp|SamsungAlarmManager|display|DeviceStorageMonitorService|wrapperGPS|io_stats|GnssLocationProvider|KeyguardServiceBoxContainer|ConnectivityService|SSRM|TLC_TIMA_PKM_initialize|mc_tlc_communication|TeeDriverClient|TLC_TIMA_PKM_measure_kernel|AutomaticBrightnessController|BatteryUtils|WifiConnectivityManager|Launcher|IconView|ApplicationPackageManager|LiveIconLoader|WifiScanningService|WifiHAL|WifiScanController|ApplicationPolicy|SELinux|TimaKeyStoreProvider|ActivityThread|zygote|GservicesProvider|GoogleHttpClient|cr_ChildProcessConnect|WificondControl|Netd|Tethering|ContactsImsCommon|ImsConstants|tnet-jni|BatteryStatsService|SignalClusterView|LiveIconManager|BitmapCacheContainer|com.samsung.android.app.powerplanning.utils.BatteryUtils|ReflectField|cr_ChildConnAllocator|TinLoadingFailTracker|WifiPermissionsUtil|EventHandler_FLP|android.hardware.wifi@1.0-service|BluetoothAdapter|bt_btm|WifiPermissionsUtil|GeofencerStateMachine|Places|GCoreUlr|BeaconBle|Sensors|SLocation|ContactsProvider_EventLog|WificondScannerImpl|AlarmManager|AlarmManagerEXT|MultiDex|NetworkSecurityConfig|DnsProxyListener|dalvik-internals|mobileconfig|SsacManager|ImsPhoneStateManager|VolteServiceModule|PdnController|PowerManagerService|GameManagerService|NoSync|SensorManager|DisplayPowerController|NetworkController|SamsungAnalytics111040|tlcFidoAuthnr|InputReader|FlashlightController|KeyguardWallpaperController|OpenGLRenderer|EasyMuteController|Vibrator|VibratorService|PowerManagerUtil|LightsService|WindowManager|InputDispatcher|InputReader|CustomFrequencyManagerService|SystemUIAnalytics|SamsungAnalytics|swipe|PanelView|BadgeCache|MARsPolicyManager|MARsDBManager|KeyguardClockPage|ScanManager|RegiMgrBase|secImsManager|GeolocationController|MultiSimUtils|CarrierText|Mms|NetworkNotificationUI2|CommandListener|ReschedulableTimer|RCS-ContactsImsCommon|Settings|DmConfigModule|NotificationMgr2|PhoneMultiSimUtils|PhoneProxy|VideoCapabilities|AudioCapabilities|SAIV_FACE|FaceController|FaceService|SamsungAnimationCreator|ImageWallpaper|Finsky|VirtualScreen|PagedView|DragLayer|HomeContainer|ImsServiceStub|DmConfigHelper|TZ))
1 голос
/ 28 июня 2018

Простой способ сделать это - просто отфильтровать только те теги, которые вы хотите видеть.

adb logcat -s "Tag1" -s "Tag2" -s "Tag3"

Воспроизводит только эти теги.

0 голосов
/ 01 апреля 2011

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

...