2011-10-25 6 views
72

Tengo una aplicación de Android que "espacia" el LogCat y me gustaría eliminar sus entradas de logcat para que la salida sea más legible.Cómo filtrar un nombre de etiqueta en el visor de Eclipse LogCat

¿Es posible tener un filtro que elimine las entradas de LogCat para un nombre de etiqueta específico? O un patrón de búsqueda que hace el truco?

+0

@pankaj No es exactamente lo que quiero. Quiero una forma de eliminar algunas entradas específicas en lugar de aislarlas. – Jleuleu

Respuesta

178

Sí. Crear un filtro donde el campo "Por etiqueta de registro" es

^(?!.*(MYTAG)).*$ 

donde MYTAG es la etiqueta que no quiere ver. No soy un experto en expresiones regulares (un "regexpert"? ;-)) así que puede haber una forma más simple de hacer esa negación, pero lo intenté y funciona.

Puede jugar con el filtro en el campo justo por encima del área de mensajes de registro del gato, mediante la introducción de cadenas de filtro allí, así:

tag:^(?!.*(DeskClock|dalvik|wpa)).*$ 

que mostrará todos los mensajes excepto etiquetas "DeskClock" , "dalvik" y "wpa".

+0

También puede agregar esta expresión regular a la barra de búsqueda sobre la lista en la Vista de Eclipse LogCat. ¡Gracias! –

+0

Gracias. Siempre he tenido problemas para generar expresiones regulares que muestren solo el resultado que no coincide. Muy útil. DDMS es realmente útil ahora. – chriv

+0

Muchas gracias. Esto es TAN útil, no sabía que podría usar expresiones regulares aquí. – razielsarafan

8

Depende de qué manera vea su logcat.

Si está utilizando la interfaz del logcat de GUI, es mejor crear un filtro para las etiquetas que desea ver. Éstos se colocan en una categoría separada. Aunque el ui cambió un poco, puedes usar este old answer from me. Debe quedar claro cómo se usa (asegúrese de presionar el botón "Mostrar pestaña de filtros guardados", de lo contrario, no verá el botón "Agregar filtro". Puede encontrarlo en la parte superior derecha del registro). No conozco ninguna opción que le permita filtrar ciertas etiquetas de todo el flujo de registro.

Si está utilizando la línea de comando, puede silenciar ciertas etiquetas. Ejemplo:

adb logcat AndroidRuntime:S *:V 

muestra todo (*:V) hasta el nivel de registro detallado, salvo la etiqueta Android Runtime, que se limita a nivel de registro "silencio", lo que significa que se imprimirá nada.

Para mostrar una sola etiqueta se puede utilizar

adb logcat *:S MyAppTag:V OtherTag:V 

La misma manera, todo se silenció excepto MyAppTag y OtherTag. Vea Filtering Log Output para más detalles.

+0

Gracias, 'adb logcat : S *: V' es lo que estaba buscando. Me gustaría el mismo comportamiento en la interfaz del logcat de la GUI de Eclipse, pero por ahora usaré la línea de comando. – Jleuleu

3

que tienen un truco:

Log.d(TAG, "MyTag" + message); 

Como se puede ver, cuando lo filtro con una llave "MyTag", sólo muestra log de mi etiqueta.

1

Esta es una respuesta tardía, pero tal vez útil. En el entorno de Eclipse, en la vista de LogCat, encima de la tabla hay un cuadro de búsqueda. Preste atención cuando está vacío, lee:

Buscar mensajes. Acepta expresiones regulares de Java.Prefijo con pid :, aplicación :, etiqueta: o texto: para limitar el alcance.

Esto significa que puede filtrar la etiqueta escribiendo allí etiqueta: MyTag o incluso expresiones regulares etiqueta:. Mi *

9

Esto puede no parecer una relación directa con la pregunta, pero aquí es una expresión regular, que filtra la mayoría de los registros generados por el sistema cuando lo coloca en su filtro de etiquetas as described by Rob.

^(?!(WifiMulticast|WifiHW|MtpService|PushClient|InputMethodManager|Provider|SurfaceTextureClient|ImageLoader|dalvikvm|OpenGLRenderer|skia|AbsListView|MediaPlayer|AudioManager|VelocityTracker|Drv|Jpeg|CdpDrv|IspDrv|TpipeDrv|iio|ImgScaler|IMG_MMU|ResMgrDrv|JpgDecComp|JpgDecPipe|mHalJpgDec|PipeMgrDrv|mHalJpgParser|jdwp|libEGL|Zygote|Trace|InputEventReceiver|SpannableStringBuilder|IInputConnectionWrapper|MotionRecognitionManager|Choreographer|v_galz|SensorManager|Sensors|GC|LockPatternUtils|SignalStrength|STATUSBAR-BatteryController|BatteryService|STATUSBAR-PhoneStatusBar|WifiP2pStateTracker|Watchdog|AlarmManager|BatteryStatsImpl|STATUSBAR-Clock)) 

Sigo actualizando esta lista de etiquetas cuando las encuentro probando en diferentes dispositivos. La lista no es exhaustiva y puede contribuir a esta respuesta. Estoy seguro de que esto ahorrará una hora a muchos.

Si hay otros registros que necesita filtrar, agréguelos a esta expresión regular mediante '| | ' personaje.

5

No pude obtener la solución elegida para que funcione correctamente en Android Studio (el IDE que vendrá con versiones futuras de Android SDK). Sin embargo, la siguiente expresión regular resolvió mi problema:

^(?!dalvikvm) 
+0

Funciona para mí , ¡gracias! – huangcd

0

Otra forma de filtrar los mensajes de registro que no se originan a partir de su aplicación es seleccionar:

Nivel de registro: Detallado

"Mostrar sólo determinada aplicación "(del menú desplegable de selección de filtro)

Luego seleccione su aplicación de la lista desplegable de la ventana de logcat.

Esto solo debe mostrar los mensajes de registro y los resultados de su aplicación.

+0

De todos modos ... necesitas expresiones regulares para filtrar la elaboración de texturas no deseadas ... y otras cosas con el nombre de tu aplicación. – Davidea

Cuestiones relacionadas