Observé que cuando uso Logcat con Eclipse con ADT para Android, también recibo mensajes de muchas otras aplicaciones. ¿Hay alguna manera de filtrar esto y mostrar solo mensajes de mi propia aplicación solamente?
android
android-logcat
Vinod
fuente
fuente
Respuestas:
Se garantiza que los nombres de los paquetes serán únicos, por lo que puede usar la
Log
función con la etiqueta como nombre del paquete y luego filtrar por nombre del paquete :NOTA: A partir de Build Tools 21.0.3 esto ya no funcionará ya que las TAGS están restringidas a 23 caracteres o menos.
Log.<log level>("<your package name>", "message");
adb -d logcat <your package name>:<log level> *:S
-d
denota un dispositivo real y-e
denota un emulador. Si hay más de 1 emulador en ejecución, puede usar-s emulator-<emulator number>
(por ejemplo,-s emulator-5558
)Ejemplo:
adb -d logcat com.example.example:I *:S
O si está utilizando
System.out.print
para enviar mensajes al registro, puede utilizaradb -d logcat System.out:I *:S
para mostrar solo llamadas a System.out.Puede encontrar todos los niveles de registro y más información aquí: https://developer.android.com/studio/command-line/logcat.html
http://developer.android.com/reference/android/util/Log.html
EDITAR: Parece que salté un poco el arma y me di cuenta de que estabas preguntando sobre logcat en Eclipse. Lo que publiqué anteriormente es para usar logcat a través de adb desde la línea de comandos. No estoy seguro de si los mismos filtros se transfieren a Eclipse.
fuente
logcat <your package name>:<log level>
la respuesta, se sugiere que es posible usar el nombre del paquete como filtro válido. Necesitaba leer la respuesta dos veces para comprender lo que en realidad dice, por lo tanto, recomiendo simplemente cambiar la primera línea a algo así como "¿logcat <tag>:<log level>
dónde<tag>
puede estar el nombre de su paquete si también lo usó como etiquetaandroid.util.Log
"Linux y OS X
Use ps / grep / cut para tomar el PID, luego grep para las entradas logcat con ese PID. Aquí está el comando que uso:
(Podría mejorar aún más la expresión regular para evitar el problema teórico de las líneas de registro no relacionadas que contienen el mismo número, pero nunca ha sido un problema para mí)
Esto también funciona cuando se combinan múltiples procesos.
Ventanas
En Windows puedes hacer:
fuente
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
adb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
adb logcat | findstr com.example.package
adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`
Desde Android 7.0, logcat tiene la opción de filtro --pid, y el comando pidof está disponible, reemplace com.example.app por el nombre de su paquete.
(Terminal ubuntu / Desde Android 7.0)
o
Para obtener más información sobre el comando pidof:
https://stackoverflow.com/a/15622698/7651532
fuente
grep
yfindstr
, pero solo están filtrando registros con algún valor, excluyendo muchos mensajes. Su respuesta es la verdadera, muestre todo el registro sobre la aplicación sin excluir el mensaje de registro de otras bibliotecas. Es como el filtro actual 'Mostrar solo los seleccionados' de Android Studio. ¡Gracias!Añadir filtro
Especificar nombres
Elige tu filtro.
fuente
Para mí, esto funciona en Mac.
Terminal
Llegué a la carpeta donde tiene que
adb
escribir el siguiente comando en la terminalAquí filtrará todos los registros
MyTAG
yAndroidRuntime
fuente
Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");
2) DEPURAR iniciar sesión en Android$ adb -s RKSCWSOV5SAIEUSC shell;
3)$ logcat MyTAG:V AndroidRuntime:E *:S
4) ahora mostrará detallado de MyTAG y errores de AndroidRuntimeActualización 17 de mayo
Han pasado algunos años, y las cosas han cambiado. Y Eclipse ya no es oficialmente compatible. Aquí hay dos enfoques más actualizados:
1. Android Studio
En la
Android monitor
caja de herramientas, puede filtrar logcat pordebuggable process
. Normalmente, cuando desarrolla una aplicación, es un proceso depurable. De vez en cuando tengo problemas con esto, y hago lo siguiente:Tools
->Android
->Enable ADB Integration
.Si ya estaba habilitado, apague y vuelva a encender
Desenchufe y vuelva a conectar su dispositivo móvil.
También hay opciones para filtrar a través de expresiones regulares y el nivel de depuración
2. logcat-color
Este es un buen contenedor de Python además de
adb logcat
si desea usar una solución basada en terminal. Lo bueno de esto es que puede guardar múltiples configuraciones y simplemente reutilizarlas. Filtrar portags
es bastante confiable. También puede filtrar porpackage
para ver registros de una o más aplicaciones solamente, pero comienzalogcat-color
justo antes de iniciar su aplicación.Vieja respuesta:
Parece que no puedo comentar las respuestas anteriores, por lo que publicaré una nueva. Este es un comentario a la respuesta de Tom Mulcahy , que muestra cómo debe cambiar el comando para que funcione en la mayoría de los dispositivos, ya que la
adb shell ps
columna PID es variable.NOTA: El siguiente comando funciona para los casos en los que ha conectado muchos dispositivos. Entonces
device id
es necesario. De lo contrario, simplemente puede omitir los corchetes '[', ']'1. Para averiguar la columna de pid, escriba:
Ahora memorice el número de columna para el PID. La numeración comienza desde
1
.2. Luego escriba lo siguiente:
Simplemente ponga la columna que memorizó
PUT_COLUMN_HERE
, p. Ej.$5
Consideración
Cada vez que vuelve a ejecutar su aplicación, debe volver a ejecutar el segundo comando, porque la aplicación obtiene un nuevo PID del sistema operativo.
fuente
Esto ha estado funcionando para mí en git bash:
fuente
poner esto a applog.sh
entonces:
applog.sh com.example.my.package
fuente
log.d("TAG", "multine\nlog")
por ejemplo):adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/ { N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e ' }' | grep -v '^$'
- Dejé eltr
, supongo que es necesario en los sistemas Windows, y envolví elAPPID
paréntesis para permitir múltiples pids (separados por|
) .Esto funciona para mí con la depuración de USB:
Conecte el dispositivo y use:
adb shell
Use el logcat cuando esté conectado:
logcat | grep com.yourapp.packagename
fuente
Si está utilizando Android Studio , puede seleccionar el proceso desde el que desea recibir logcats. Aquí está la captura de pantalla.
fuente
Log cat has a new option (on by default) which creates an application filter automatically such that only the launched application's output is shown
Escribí un script de shell para filtrar logcat por nombre de paquete, que creo que es más confiable que usar
Utiliza / proc / $ pid / cmdline para averiguar el pid real, luego hace un grep en logcat
https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a
fuente
Ubuntu: adb logcat -b all -v color --pid = `adb shell pidof -s com.packagename` Con color y registro continuo de la aplicación
fuente
adb shell pidof ...
bit no funcionó para mí, así queadb shell
ingresé al dispositivo y ejecuté latop
copia del PID de mi aplicación allí y luego lo reemplacé en su comandopgrep
lugar de pidofADT v15 para Eclipse le permite especificar un nombre de aplicación (que en realidad es el valor del paquete en su androidmanifest.xml).
Me encanta poder filtrar por aplicación, pero el nuevo logcat tiene un error con el desplazamiento automático. Cuando se desplaza un poco hacia arriba para ver los registros anteriores, se desplaza automáticamente hacia abajo en unos segundos. Parece que desplazarse 1/2 camino hacia arriba del registro evita que salte al fondo, pero a menudo eso es inútil.
EDITAR: intenté especificar un filtro de aplicación desde la línea de comandos, pero no tuve suerte. Si alguien resuelve esto O cómo detener el desplazamiento automático, hágamelo saber.
fuente
Que utilizan Windows símbolo del sistema:
adb logcat -d | findstr <package>
.* Esto fue mencionado por primera vez por jj_ , pero me llevó años encontrarlo en los comentarios ...
fuente
Como variante, puede utilizar el script PID Cat de terceros de Jake Wharton. Este script tiene dos ventajas principales:
De la documentación:
Una salida se parece a
fuente
No estoy seguro de que haya una manera de ver solo los mensajes del sistema con respecto a su aplicación, pero puede filtrar según una cadena. Si está haciendo un registro dentro del programa, puede incluir una determinada palabra clave única y filtrar según esa palabra.
fuente
Pruebe: Ventana -> Preferencias -> Android -> LogCat. Cambie el campo "Mostrar vista logcat si ..." el valor "VERBOSE". Me ayudó.
fuente
Si está utilizando Eclipse , presione el signo verde + en la ventana de logCat a continuación y coloque el nombre del paquete (com.example.yourappname) en el cuadro Nombre de la aplicación . Además, elija cualquier nombre que le resulte cómodo en el cuadro Nombre del filtro y haga clic en Aceptar. Solo verá mensajes relacionados con su aplicación cuando el filtro que acaba de agregar se elija desde el panel izquierdo en logCat.
fuente
Dale un nombre a tu registro. Yo llamé al mío "wawa".
En Android Studio, vaya a Android-> Editar configuraciones de filtro
Luego escriba el nombre que le dio a los registros. En mi caso, se llama "wawa". Estos son algunos ejemplos de los tipos de filtros que puede hacer. Puede filtrar por System.out, System.err, Logs o nombres de paquetes:
fuente
Esta es probablemente la solución más simple.
Además de una solución de Tom Mulcahy, puede simplificarla aún más a continuación:
El uso es fácil como un alias normal. Simplemente escriba el comando en su shell:
La configuración de alias lo hace útil. Y la expresión regular lo hace robusto para aplicaciones multiproceso, suponiendo que solo se preocupe por el proceso principal.
Por supuesto, puede establecer más alias para cada proceso como desee. O use la solución de hegazy. :)
Además, si desea establecer niveles de registro, es
fuente
En Windows 10, usando Ionic, lo que funcionó muy bien para mí fue combinar 'findtr' con "INFO: CONSOLE" generado por todos los mensajes de la aplicación. Entonces, mi comando en la línea de comando es:
fuente
Traté de usar la respuesta de Tom Mulcahy, pero desafortunadamente no funcionaba para aplicaciones con múltiples procesos, así que la edité para satisfacer mis necesidades.
fuente
Uso
-s
!Fuente
fuente
Además de la respuesta de Tom Mulcahy , si desea filtrar por PID en la consola de Windows, puede crear un pequeño archivo por lotes como ese:
fuente
Obviamente, esta es una pregunta dirigida al uso de Logcat desde fuera del dispositivo desarrollador, sin embargo, si desea mostrar la salida de Logcat en el dispositivo (mediante programación), solo necesita esto:
los
*:D
final, se filtran todos los mensajes por debajo del nivel de registro de depuración, pero puede omitirlo.Para dirigir la salida a, por ejemplo, un TextView, consulte, por ejemplo, aquí .
fuente
Ahora es posible escribir tag: nameofthetag o app: nameoftheapp para filtrar sin agregar nuevos filtros a la barra de filtros guardados
fuente
En intelliJ (y probablemente también en eclipse) puede filtrar la salida de logcat por vista web de texto , por lo que imprime básicamente todo lo que produce phonegap
fuente
Otra variante de Gavriel's
applog.sh
con soporte de varios dispositivos y aplicaciones con múltiples procesos:Uso:
applog.sh com.example.my.package [-s <specific device>]
fuente
En Linux, esto funcionó para mí:
fuente