Respuestas:
Si lo está utilizando adb logcat
, puede canalizarlo a través de grep y utilizar su coincidencia invertida: Desde la página de manual de grep :
v, --invert-match Invierte el sentido de coincidencia, para seleccionar líneas no coincidentes.
Por ejemplo:
$adb logcat | grep --invert-match 'notshownmatchpattern'
Puede extender esto usando expresiones regulares .
Aquí hay un ejemplo de tal expresión:
"/^(?:emails|tags|addresses)"
Este verificaría si se produce cualquiera de los dados, grep no los enumeraría.
grep
es un comando estándar de Unix. Para Windows puedes probar find /V "notshownmatchpattern"
. PD Aparentemente, el shell adb también tiene un grep
. ¡Pero no es lo mismo que el Unix estándar grep
!
Puede hacer esto desde DDMS Monitor (y también Eclipse o Android Studio) con el cuadro de entrada de expresión regular y aserciones negativas anticipadas , por ejemplo, estoy excluyendo mucho ruido de mi registro con lo siguiente:
tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))
(La "etiqueta:" no es parte de la expresión regular, pero le dice a LogCat que solo aplique la expresión regular al campo Etiqueta. Si usa este truco en un filtro guardado, coloque solo la expresión regular en el cuadro de entrada "Etiqueta" , y omita el prefijo "tag:")
En el panel del monitor logcat de Android Studio, puede configurar un filtro guardado para esto abriendo el menú desplegable en la esquina superior derecha (puede tener "Mostrar solo la aplicación seleccionada" seleccionada) y seleccionando Editar configuración de filtro. Cree un nuevo filtro logcat y coloque ^(?!(WifiMulticast
... etc. ))
en el cuadro Etiqueta de registro, con la Regex
casilla marcada.
Si desea excluir o filtrar ciertos mensajes por nombre de etiqueta en Android Studio, vaya a la ventana LogCat => Editar configuración de filtro e ingrese lo siguiente en "por etiqueta de registro (regex):"
^(?!(tag1|tag2|tag3|tag4))
Tenga en cuenta que no hay espacios, esto es importante
^(?!tag1)
^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Esto excluirá textos que tengan contenido WindowManager, dalvik, ...
tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Esto excluirá las etiquetas WindowManager, dalvik, ... de logcat
^(?!(WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc*))
Desde el shell, puede usar un comando como:
adb logcat AlarmManagerService:S PowerManagerService:S *:V
que incluirá todos los registros aparte de aquellos con las etiquetas AlarmManagerService
y PowerManagerService
.
( :S
Significa "silencioso", lo que significa que no se imprimirá nada para esas etiquetas; :V
significa "detallado" que significa que todo se imprimirá para todas las demás etiquetas. La documentación de Android para logcat tiene más detalles de otras opciones que puede usar en los filtros)
También puede usar la ANDROID_LOG_TAGS
variable de entorno para configurar filtros predeterminados, por ejemplo (en bash):
export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"
S
es para 'silencio'. Sin embargo, he actualizado la respuesta para explicar esto, como sugieres.
Combine la búsqueda anticipada positiva y negativa para un filtrado más potente.
Ejemplo:
(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))
Se incluyen las etiquetas en los primeros paréntesis anidados.
Las etiquetas en segundo lugar están excluidas.
Aquí hay una lista de filtros que he estado usando para ignorar los registros del sistema Samsung . funcionaría también con otros dispositivos.
Logcat -> Editar configuración de filtro -> Etiqueta de registro
^(?!(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))
Una manera fácil de hacer esto es simplemente filtrando solo las etiquetas que desea ver.
adb logcat -s "Tag1" -s "Tag2" -s "Tag3"
Solo se mostrarán esas etiquetas.
Dentro de la vista Eclipse Logcat no existe tal opción. Sin embargo, puede utilizar el nivel de registro para excluir cualquier mensaje cuyo nivel de registro sea demasiado bajo. P.ej. establecerlo en I (nfo) no muestra mensajes erbose D (ebug) y (V).