¿Cómo filtrar el logcat de Android por aplicación?

¿Cómo puedo filtrar la salida logcat de Android por aplicación? Necesito esto porque cuando adjunto un dispositivo, no puedo encontrar la salida que quiero debido al spam de otros procesos.

Usted debe utilizar su propia etiqueta, mire: http://developer.android.com/reference/android/util/Log.html

Me gusta.

 Log.d("AlexeysActivity","what you want to log"); 

Y luego, cuando quiera leer el registro, utilice>

 adb logcat -s AlexeysActivity 

Que filtra todo lo que no utiliza la misma etiqueta.

De acuerdo con http://developer.android.com/tools/debugging/debugging-log.html :

He aquí un ejemplo de una expresión de filtro que suprime todos los mensajes de registro, excepto aquellos con la etiqueta "ActivityManager", con prioridad "Info" o superior, y todos los mensajes de registro con la etiqueta "MyApp", con prioridad "Debug" o superior:

adb logcat ActivityManager:I MyApp:D *:S

El elemento final en la expresión anterior, *: S, establece el nivel de prioridad para todas las etiquetas en "silencioso", asegurando así que sólo se muestran los mensajes de registro con "Ver" y "MiApp".

  • V – Verbosa (prioridad más baja)
  • D – Depurar
  • I – Información
  • W – Advertencia
  • E – Error
  • F – Fatal
  • S – Silencio (la más alta prioridad, en la que nunca se imprime nada)

Estoy trabajando en Android Studio, hay una buena opción para obtener el mensaje usando el nombre del paquete. En la opción "Editar configuración de filtro" puede crear un nuevo filtro agregando el nombre del paquete en "por nombre de paquete".

Introduzca aquí la descripción de la imagen

Hola tengo la solución usando esto:

Tienes que ejecutar este comando desde el terminal. Conseguí el resultado,

 adb logcat | grep `adb shell ps | grep com.package | cut -c10-15` 

Supongamos que su aplicación denominada MyApp contiene los siguientes componentes.

  • MyActivity1
  • MyActivity2
  • MyActivity3
  • MyService

Para filtrar la salida de registro de su aplicación MyApp usando logcat, escriba lo siguiente.

 adb logcat MyActivity1:v MyActivity2:v MyActivity3:v MyService:v *:s 

Sin embargo, esto requiere que conozca los nombres de TAG para todos los componentes de su aplicación en lugar de filtrar utilizando el nombre de aplicación MyApp. Vea logcat para más detalles.

Una solución para permitir el filtrado en el nivel de aplicación sería agregar un prefijo a cada uno de sus TAG únicos.

  • MyAppActivity1
  • MyAppActivity2
  • MyAppActivity3
  • MyAppService

Ahora se puede realizar un filtro comodín en la salida logcat usando el prefijo TAG.

 adb logcat | grep MyApp 

El resultado será la salida de toda la aplicación.

Si pudieras vivir con el hecho de que estás registrando vienen de una ventana de terminal extra, podría recomendar pidcat (Toma sólo el nombre del paquete y registra los cambios de PID.)

Poner esto a applog.sh

 #!/bin/sh PACKAGE=$1 APPPID=`adb -d shell ps | grep "${PACKAGE}" | cut -c10-15 | sed -e 's/ //g'` adb -d logcat -v long \ | tr -d '\r' | sed -e '/^\[.*\]/ {N; s/\n/ /}' | grep -v '^$' \ | grep " ${APPPID}:" 

Entonces: applog.sh com.example.my.package

Cuando recibamos algún error de nuestra aplicación, Logcat mostrará el filtro de sesión automáticamente. Podemos crear un filtro de sesión por auto. Simplemente agregue un nuevo filtro logcat, rellene el formulario de nombre del filtro. A continuación, rellene el nombre por aplicación con su paquete de aplicación. (Por ejemplo: mi aplicación es "Adukan" y el paquete es "com.adukan", por lo que relleno por el nombre de la aplicación con el paquete de aplicación "com.adukan")

Si utiliza Eclipse puede filtrar por aplicación tal y como es posible con Android Studio tal como lo presenta shadmazumder.

Simplemente vaya a logcat , haga clic en Mostrar filtros guardados y luego agregue un nuevo filtro logcat . Aparecerá lo siguiente:

Introduzca aquí la descripción de la imagen

A continuación, agrega un nombre al filtro y, por nombre de aplicación , especifica el paquete de la aplicación.

En mi computadora portátil de Windows 7, uso 'adb logcat | Busque "com.example.name" 'para filtrar la salida logcat relacionada con el programa del sistema del resto. La salida del programa logcat se canaliza en el comando find. Cada línea que contiene 'com.example.name' se envía a la ventana. Las comillas dobles forman parte del comando find.

Para incluir la salida de mis comandos de registro, utilizo el nombre del paquete, aquí "com.example.name", como parte del primer parámetro en mis comandos de registro como este:

 Log.d("com.example.name activity1", "message"); 

Nota: Mi teléfono Samsung Galaxy pone mucho menos programa relacionados con la salida que el emulador de nivel 17.

Sí, ahora lo obtendrá automáticamente ….
Actualización a AVD 14 , donde el logcat session filter automático de session filter
Donde filtrar el registro en la aplicación específica (paquete)

A la izquierda en la vista logcat tiene las ventanas "Filtros guardados". Aquí puede agregar un nuevo filtro logcat por nombre de aplicación (por ejemplo, com.sus.package)

Lo que suelo hacer es tener un filtro separado por PID que sería el equivalente de la sesión actual. Pero, por supuesto, cambia cada vez que ejecuta la aplicación. No es bueno, pero es la única manera de tener toda la información sobre la aplicación independientemente de la etiqueta de registro.

En general, hago este comando "adb shell ps" en el prompt (permite ver los procesos en ejecución) y es posible descubrir pid de la aplicación. Con este pid en manos, vaya a Eclipse y escriba pid: XXXX (XXXX es el pid de la aplicación), luego la salida de registros se filtra por esta aplicación.

O, de una manera más fácil … en la vista de logcat en Eclipse, busque cualquier palabra relacionada con su aplicación deseada, descubra el pid, y luego haga un filtro por pid "pid: XXXX".

Yo uso para almacenar en un archivo:

  int pid = android.os.Process.myPid(); File outputFile = new File(Environment.getExternalStorageDirectory() + "/logs/logcat.txt"); try { String command = "logcat | grep " + pid + " > " + outputFile.getAbsolutePath(); Process p = Runtime.getRuntime().exec("su"); OutputStream os = p.getOutputStream(); os.write((command + "\n").getBytes("ASCII")); } catch (IOException e) { e.printStackTrace(); } 

Esta es probablemente la solución más simple.

Además de una solución de Tom Mulcahy, puedes simplificarla más abajo como se muestra a continuación:

 alias logcat="adb logcat | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`" 

El uso es fácil como alias normal. Simplemente escriba el comando en su shell:

 logcat 

La configuración de alias lo hace práctico. Y el regex lo hace robusto para aplicaciones multiprocesos, asumiendo que sólo le interesa el proceso principal.

De coz usted puede fijar aliases más para cada proceso como usted por favor. O utilice la solución hegazy. 🙂

Además, si desea establecer niveles de registro, es

 alias logcat-w="adb logcat *:W | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`" 

Puede lograr esto en Eclipse logcat ingresando lo siguiente en el campo de búsqueda.

 app:com.example.myapp 

Com.example.myapp es el nombre del paquete de aplicación.

En Android Studio en la ventana de Android Monitor: 1. Seleccione la aplicación que desea filtrar. 2. Seleccione "Mostrar sólo la aplicación seleccionada"

Introduzca aquí la descripción de la imagen

Utilice el primer parámetro como el nombre de su aplicación. Log.d ("your_Application_Name", "mensaje");

Y en LogCat: create Filter —> Filter Name & by Log Tag: es igual a 'your_Application_Name' creará una nueva pestaña para su aplicación.

Utilice nombres de clase totalmente calificados para sus etiquetas de registro:

 public class MyActivity extends Activity { private static final String TAG = MyActivity.class.getName(); } 

Entonces

 Log.i(TAG, "hi"); 

A continuación, utilice grep

 adb logcat | grep com.myapp 

La aplicación Android Device Monitor disponible en sdk / tools / monitor tiene una opción logcat para filtrar 'por Nombre de aplicación' donde se introduce el nombre del paquete de aplicación.

Mi función .bash_profile, puede ser de cualquier uso

 logcat() { if [ -z "$1" ] then echo "Process Id argument missing."; return fi pidFilter="\b$1\b" pid=$(adb shell ps | egrep $pidFilter | cut -c10-15) if [ -z "$pid" ] then echo "Process $1 is not running."; return fi adb logcat | grep $pid } alias logcat-myapp="logcat com.sample.myapp" 

Uso:

$ Logcat-myapp

$ Logcat com.android.something.app

En Linux / Un * X / Cygwin puede obtener una lista de todas las etiquetas en el proyecto (con anexado :V después de cada) con este comando (dividir por legibilidad):

 $ git grep 'String\s\+TAG\s*=\s*' | \ perl -ne 's/.*String\s+TAG\s*=\s*"?([^".]+).*;.*/$1:V/g && print ' | \ sort | xargs AccelerometerListener:V ADNList:V Ashared:V AudioDialog:V BitmapUtils:V # ... 

Cubre las etiquetas definidas ambas maneras de definir las etiquetas:

 private static final String TAG = "AudioDialog"; private static final String TAG = SipProfileDb.class.getSimpleName(); 

Y luego simplemente usarlo para adb logcat.

He encontrado una aplicación en la tienda que puede mostrar el nombre / proceso de un registro. Dado que Android Studio sólo pone un (?) En los registros generados por los otros procesos, me pareció útil saber qué proceso está generando este registro. Pero aún así esta aplicación falta el filtro por el nombre del proceso. Puedes encontrarlo aquí .

Añada el paquete de su aplicación en "Filter Name" haciendo clic en el botón "+" en la esquina superior izquierda en logcat.

Para filtrar los registros en la línea de comandos utilice la siguiente secuencia de comandos

Adb logcat com.su paquete: v

La salida de catálogos de registro se puede filtrar para mostrar sólo mensajes de su paquete mediante estos argumentos.

Adb com.sus.package: I *: s

Editar – Hablé con pronto.

 adb com.your.package:v 
  • ¿Cómo puedo ver la salida de Android LogCat de un APK exportado que se ejecuta en un dispositivo físico?
  • Implementación de un bucle while en android
  • Cómo mostrar mensajes largos en logcat
  • Logcat está siendo "spam", resultando en "Demasiada salida para procesar"
  • Android studio logcat nada para mostrar
  • Cómo abrir LogCat en Eclipse (para Android Debug)
  • ¿Cómo detengo eclipse de la creación automática de filtros para android logcat?
  • ¿Es mi "hal_process_report_ind: mala calidad del artículo: 11" algo de qué preocuparse?
  • Disminuir la verbosidad del registro interno de ORMlite o deshabilitarla
  • ¿Por qué Logcat no imprimirá un registro cuya etiqueta empiece con "IMS"?
  • Cómo agregar etiquetas a rastros de pila de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.