Conceptos básicos sobre el uso de logcat en el desarrollo de Android

Estoy empezando Android y no entiendo cómo usar esta cosa logcat .

Estoy trabajando en el emulador, pero probablemente esté trabajando en un dispositivo real en el futuro también. Uno de los programas que estaba probando ( VER AQUÍ ) cuelga cuando se inicia y otros usuarios sugirieron que mire el logcat. Pero el logcat en mi computadora sigue mostrando nuevo texto y desplazándose hacia arriba. No estoy seguro de cómo buscar algo en todo ese lío. A veces se mantiene desplazándose cuando ni siquiera estoy probando mi programa.

¿Muestra cosas si hago algo en el emulador? El emulador ya es tan lento que es difícil averiguar qué evento en el emulador está causando qué mensaje.

Además, para un principiante, ¿qué nivel de verbosidad es suficiente en el logcat? Ir a asertar no muestra nada (lo cual es probablemente lógico ya que no tengo aserciones habilitadas) y asumí que Error era probablemente el modo menos detallado, pero incluso entonces el registro tiene demasiados mensajes para manejar.

¿Cuál es el nivel mínimo de verbosidad que necesito para establecerlo, y hay algún programa de ejemplo por ahí que me permite probar qué tipo de evento en el código produce qué tipo si el mensaje en el logcat? (Estoy usando logcat en el IDE)

— EDITAR —

Veo que el logcat tiene mensajes como estos

08-12 08:24:26.699: I/Choreographer(528): Skipped 57 frames! The application may be doing too much work on its main thread. 08-12 08:25:02.550: I/Choreographer(528): Skipped 33 frames! The application may be doing too much work on its main thread. 08-12 08:25:07.950: I/Choreographer(528): Skipped 37 frames! The application may be doing too much work on its main thread. 08-12 08:25:08.022: E/SoundPool(287): error loading /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: W/AudioService(287): Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: E/SoundPool(287): error loading /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: W/AudioService(287): Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg 

Esto está en el modo Info, y el modo verboso tiene un texto aún más incomprensible, así que no lo incluí. Parece que no se puede encontrar el archivo que contiene el efecto de sonido que se reproduce cuando se presiona el botón de retroceso, que se muestra en el registro. ¿Cómo puedo eliminar esos mensajes innecesarios relacionados con la interfaz de usuario de OS de teléfonos y sólo mostrar mensajes relacionados con el programa que estoy probando y lo que está causando que colgar antes de incluso onCreate () se llama en el código? Quiero ser capaz de hacer esto desde el IDE por ahora.

Log.v () – VERBOSE

Log.d () – DEBUG

Log.i () – INFO

Log.w () – WARN

Log.e () – ERROR


Consejo: Una buena convención es declarar una constante TAG en tu clase:

 private static final String TAG = "MyActivity"; 

Consejo: No olvide que cuando hace una llamada como

 Log.e(TAG, "index=" + i); 

Utilice Log.e(); Porque le demuestra en color rojo usted puede identificar fácilmente error en todo el registro


También puede utilizar flitter Logs en eclipse comprobar a continuación.

Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Para más detalles, visite el sitio para desarrolladores .

Lo que hago cuando trabajo en una aplicación con un problema es cambiar al modo ERROR en el logcat y también agregar un filtro para el nombre del paquete de mi aplicación, ej. com.something.blah . De esta manera sólo veo mensajes de error relacionados con mi aplicación.

Por supuesto, hay veces cuando esto no es suficiente información, pero por el momento que necesita más información que debe ser cómodo trabajando con el logcat 🙂

Para el registro manual (usando Log.* ) Una pestaña muy única (algo como ThisIsAVeryUniqueTag1234 ) puede ahorrar mucho tiempo. Basta con filtrar en esta etiqueta y debe ser el único mensaje que vea. Consulte Registro para obtener información completa sobre cómo utilizar las etiquetas y el registro manual.

 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 emuladores 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 usar adb -d logcat System.out:I *:S para mostrar sólo las llamadas a System.out .

Puede encontrar todos los niveles de registro y más información aquí: http://developer.android.com/guide/developing/tools/adb.html#logcat

Debe utilizar Log.<log level>(TAG, message) en su código donde la etiqueta puede ser cualquier cosa pero siempre utilizo el nombre del paquete.

Ejemplo: Log.i("com.example.example", "message");

  • Deshabilitar los mensajes de WebView de la salida de logcat
  • Obtención de logcat desde el dispositivo Android de un probador
  • "Error al informar WTF" en error logcat
  • ¿Puedo capturar mensajes de LogCat al usar el teléfono normalmente (no conectado al PC)?
  • Logcat vacía con ACRA en el dispositivo
  • Escriba a stdout en JNI Android? Sin <android / log.h>
  • mensajes de error de libagl alphaPlaneWorkaround en LogCat
  • Solucionar 'la aplicación ha detenido' los errores de error
  • Mensaje de error de Android datarouter logcat
  • Adb logcat -f log.txt error: no se pudo abrir el archivo de salida: Sistema de archivos de sólo lectura
  • Android - E / Surface: queueBuffer: buffer de cola de errores en SurfaceTexture, -22 crash
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.