¿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.
- Solamente los mensajes anaranjados aparecen en el Logcat de Android
- Cómo deshabilitar Logcat en Eclipse?
- Errores en Eclipse LogCat - Android
- ¿Cómo puedo arreglar lo que está causando esto inundar mi logcat: I / System.out: (HTTPLog) -Static: isSBSettingEnabled false
- Registrar mensajes en android studio junit test
- Manejo de espacios en logcat
- Deshabilitar los mensajes de WebView de la salida de logcat
- Enviar salida Logcat de una aplicación a una dirección de correo electrónico
- ¿Cuál es la diferencia entre logcat vs. dmesg?
- Android Studio - Logcat que muestra "ningún dispositivo conectado" y "ninguna aplicación debugable"
- Enviar correo electrónico mediante programación en Android
- MediaRecorder "falló -12"
- Android: El proceso secundario (logcat) continúa ejecutándose después de que el proceso padre (aplicación) falleció
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".
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:
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"
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
- ¿Qué significa elipsis en android?
- ¿Cómo puedo mantener el estado de fragmento cuando se agrega a la pila trasera?