Filtrar salida en logcat por nombre de etiqueta

151

Estoy tratando de filtrar la salida de logcat de un dispositivo real (no un emulador) por nombre de etiqueta, pero recibo todos los mensajes, lo cual es bastante spam. Solo quiero leer mensajes del navegador que deberían ser algo como "browser: " o "webkit: ", pero no funciona ... Aquí es lo que obtengo:

salida real

mascar
fuente

Respuestas:

294

utilizar este:

adb logcat -s "TAGNAME"
se sentó
fuente
77
¡Gracias! Lo anterior es equivalente a ADB Logcat *: s 'tagname'
Munch
3
¿Cómo puedo filtrar un <tagname>?
Arunabh Das
Creo que la única forma de filtrar es por niveles. Por ejemplo, si alguna aplicación está enviando correo no deseado a Depuración, configure el nivel de logcat para que solo muestre Información y niveles superiores: logcat *: I
Someone Somewhere
1
¿Es posible usar arriba con -f nombrearchivo? Digamos que mi escenario es filtrar los registros por TagName y volcarlos en un archivo de texto.
Duende verde
9
Das - "adb logcat TAGNAME: s" escuchará una etiqueta ruidosa.
Don Park
56

En caso de que alguien tropiece con esto como lo hice yo, puede filtrar varias etiquetas agregando una coma en el medio, así:

adb logcat -s "browser","webkit"
aarislarsen
fuente
Explica dónde debo poner este código. Soy una nueva abeja Por favor explique
Zar E Ahmer
1
@Nepster Escriba eso en la terminal.
asíncrono
Si usa cygwin en Windows, puede usar grep ... y sí, esto funciona.
sgupta
12

Otra opción es establecer los niveles de registro para etiquetas específicas:

adb logcat SensorService: S PowerManagerService: S NfcService: S power: I Sensors: E

Si solo desea establecer los niveles de registro para algunas etiquetas, puede hacerlo etiqueta por etiqueta.

mkobit
fuente
9

No dependa del shell ADB, simplemente trátelo (el adb logcat) una salida de Linux normal y luego pip:

$ adb shell logcat | grep YouTag
# just like: 
$ ps -ef | grep your_proc 
Siwei Shen 申思维
fuente
55
Esta es una mala elección porque se envía mucho tráfico innecesario y el filtro obviamente no funcionará. Si un proceso no relacionado registra un mensaje que parece tener alguna cadena, aparecerá.
John Smith
and the filter obviously won't work, ¿has probado? Tengo y pegué mi respuesta de acuerdo con el resultado.
Siwei Shen 申思维
1
La pregunta era para Windows, donde grep no está disponible
sroskelley
1
Si usa cygwin en Windows, puede usar grep ... y sí, esto funciona.
sgupta
6

Así es como creo una etiqueta:

private static final String TAG = SomeActivity.class.getSimpleName();
 Log.d(TAG, "some description");

Puedes usar getCannonicalName

Aquí tengo los siguientes filtros TAG:

  • cualquiera (*) Ver - VERBOSE
  • cualquier (*) Actividad - VERBOSA
  • cualquier etiqueta que comience con Xyz (*) - ERROR
  • System.out - SILENT (ya que estoy usando Log in my own code)

Aquí lo que escribo en la terminal:

$  adb logcat *View:V *Activity:V Xyz*:E System.out:S
usuario3566154
fuente