Escribir y ver registros con Logcat

Android Monitor incluye un monitor de logcat en el que se muestran mensajes de depuración. En el monitor de logcat, se muestran mensajes del sistema, como por ejemplo, cuando ocurre una recopilación de elementos no usados, como también mensajes que puedes agregar a tu app mediante la clase Log. Se muestran mensajes en tiempo real y también se conserva un historial para que puedas ver mensajes más antiguos.

A fin de mostrar solo la información de interés, puedes crear filtros, modificar la cantidad de información que se muestra en los mensajes, establecer niveles de prioridad, mostrar mensajes producidos únicamente por el código de la app e inspeccionar el registro. De manera predeterminada, el monitor de logcat muestra el resultado de registro solo en relación con la app que se haya ejecutado más recientemente.

Cuando se produce una excepción en una app, en el monitor de logcat aparece un mensaje y luego el seguimiento de pila asociado que contiene vínculos al código. Esta función puede ayudarte a solucionar errores y mejorar la operación de la app.

A partir de Android Studio 2.2, la ventana Run también muestra mensajes de registro para la app que está en ejecución. Ten en cuenta que puedes configurar la visualización del monitor de logcat, pero no la ventana Run.

Formato de mensajes de logcat

Todos los mensajes de registro de Android tienen una etiqueta y una prioridad asociadas a ellos. La etiqueta de un mensaje de registro del sistema es una string breve que indica el componente del sistema a partir del cual se origina el mensaje (por ejemplo, ActivityManager). Una etiqueta definida por el usuario puede ser cualquier string que te resulte útil; por ejemplo, el nombre de la clase actual (la etiqueta recomendada). Se define en una llamada al método Log. Por ejemplo:

Log.d(tag, message);

La prioridad es uno de los siguientes valores:

  • V: Detalle (prioridad más baja)
  • D: Depuración
  • I: Información
  • W: Advertencia
  • E: Error
  • A: Aserción

El formato del mensaje de registro es el siguiente:

date time PID-TID/package priority/tag: message

Por ejemplo, el siguiente mensaje de registro tiene una prioridad V y una etiqueta AuthZen:

12-10 13:02:50.071 1901-4229/com.google.android.gms V/AuthZen: Handling delegate intent.

PID es el identificador del proceso y TID el identificador del subproceso. Pueden ser iguales si solo hay un subproceso.

Visualización de una app en ejecución en el monitor de logcat

Para mostrar los mensajes de registro para una app en particular, sigue estos pasos:

  1. Asegúrate de cumplir con los requisitos previos y las dependencias.
  2. Abre un proyecto de la app.
  3. Ejecuta la app en un dispositivo o emulador de hardware.
  4. Abre Android Monitor.
  5. Haz clic en la pestaña logcat.
  6. De manera predeterminada, en el monitor de logcat se muestran solo los mensajes de registro para la app que se ejecuta en el dispositivo o emulador:

    Para cambiar esta configuración predeterminada, consulta Filtrado de mensajes de logcat.

  7. Si lo deseas, puedes seleccionar un dispositivo, emulador o proceso diferente.

Configuración del nivel de registro

Para controlar la cantidad de mensajes que deseas que aparezcan en el monitor de logcat, puedes configurar el nivel de registro. Puedes mostrar todos los mensajes o solo aquellos que indiquen las condiciones más graves.

Recuerda que el monitor de logcat continúa recopilando todos los mensajes independientemente de la configuración del nivel de registro. Dicha configuración solo determina lo que se muestra en el monitor.

Para configurar el nivel de registro, sigue estos pasos:

  • En el menú Log level, selecciona uno de los siguientes valores:
    • Verbose: se muestran todos los mensajes de registro (configuración predeterminada).
    • Debug: se muestran los mensajes de registro de depuración que son útiles durante el desarrollo únicamente, como también los niveles de mensaje más abajo en esta lista.
    • Info: se muestran los mensajes de registro esperados para uso regular, como también los niveles de mensaje más abajo en esta lista.
    • Warn: se muestran posibles problemas que todavía no se consideran como errores, y los niveles de mensaje, más abajo en esta lista.
    • Error: se muestran los problemas que generaron errores, y también el nivel de mensaje, más abajo en esta lista.
    • Assert: se muestran problemas que el desarrollador espera que nunca sucedan.

Búsqueda de mensajes de logcat

Para buscar los mensajes que actualmente aparezcan en el monitor de logcat, sigue estos pasos:

  1. Puedes seleccionar Regex si deseas usar un patrón de búsqueda de expresión regular.
  2. Escribe una secuencia de caracteres en el campo de búsqueda Ícono de búsqueda.
  3. En el monitor de logcat, se muestran los cambios en consecuencia.

  4. Presiona Enter para almacenar la string de búsqueda en el menú durante esta sesión.
  5. Para repetir una búsqueda, elige dicha string en el menú de búsqueda. Selecciona Regex o anula esta selección según sea necesario (no se guarda la configuración).

Filtrado de mensajes de logcat

Una forma de reducir los resultados de registro a un nivel razonable es restringir los mensajes mediante un filtro.

Nota: el filtro se aplica al historial de logcat completo, no solo a aquellos mensajes que se muestran actualmente en el monitor de logcat. Asegúrate de que las demás opciones de visualización estén configuradas correctamente, de modo que puedas ver el resultado del filtro que desees examinar.

Para definir y aplicar un filtro, sigue estos pasos:

  1. En el menú de filtros, selecciona una opción de filtro:
    • Show only selected application: se muestran los mensajes producidos por el código de la app únicamente (configuración predeterminada). El monitor de logcat filtra los mensajes de registro mediante el PID de la app activa.
    • No Filters: no se aplican filtros. En el monitor de logcat, se muestran todos los mensajes de registro del dispositivo, independientemente del proceso que selecciones.
    • Edit Filter Configuration: crea o modifica un filtro personalizado. Por ejemplo, puedes crear un filtro para ver mensajes de registro de dos apps al mismo tiempo.

    Luego de definir los filtros, también puedes seleccionarlos en el menú. Para quitarlos del menú, debes borrarlos.

  2. Si seleccionaste Edit Filter Configuration, crea o modifica un filtro.
    1. Especifica los parámetros del filtro en el diálogo Create New Logcat Filter:
      • Filter Name: ingresa el nombre de un filtro que desees definir o selecciónalo en el subpanel izquierdo para modificar un filtro existente. El nombre solo puede contener caracteres en minúscula, guión bajo y números.
      • Log Tag: si lo deseas, puedes especificar una etiqueta. Para obtener más información, consulta Formato de mensajes de logcat.
      • Log Message: si lo deseas, puedes especificar el texto del mensaje de registro. Para obtener más información, consulta Formato de mensajes de logcat.
      • Package Name: si lo deseas, puedes especificar un nombre de paquete. Para obtener más información, consulta Formato de mensajes de logcat.
      • PID: si lo deseas, puedes especificar un ID de proceso. Para obtener más información, consulta Formato de mensajes de logcat.
      • Log Level: si lo deseas, puedes seleccionar un nivel de registro. Para obtener más información, consulta Configuración del nivel de registro.
      • Regex: selecciona esta opción para usar una sintaxis de expresión regular para ese parámetro.
    2. Haz clic en + para agregar la definición del filtro al subpanel izquierdo.
    3. Para quitar un filtro, selecciónalo en el subpanel izquierdo y haz clic en -.

    4. Cuando finalices, haz clic en OK. Si haces clic en Cancel, se pierden las adiciones o modificaciones de filtros que hayas hecho.
  3. Asegúrate de ver los mensajes de registro que deseas examinar.
  4. Si crees que no ves los mensajes de registro que deseas, intenta seleccionando No filters y buscando mensajes de registro específicos.

Configuración de la visualización del encabezado de logcat

Para personalizar la visualización del encabezado y mostrar solo la información que te interesa, sigue estos pasos:

  • Selecciona Use Soft Wraps Ícono de Use Soft Wraps para ver el mensaje completo y evitar que se corte en el borde derecho.
  • Haz clic en Configure Logcat Header Ícono de Configure Logcat header para especificar los elementos de los mensajes que deseas mostrar u ocultar y, luego, haz clic en OK.

Para obtener más información sobre los elementos de los mensajes, consulta Formato de mensajes de logcat.

Desplazamiento ascendente y descendente en el seguimiento de pila

Cuando se produce una excepción en la app, en el mensaje se incluye un seguimiento de pila de las llamadas del método. El monitor de logcat te permite localizar rápidamente fragmentos del seguimiento de pila en el registro y ver el código asociado en Code Editor. Si es necesario (y posible), el descompilador extrae el código fuente que puedes ver.

Para ascender o bajar de posición en el seguimiento de pila, y ver el código asociado en Code Editor, sigue estos pasos:

  • Haz clic en Up the Stack Trace Ícono de Up the Stack Trace para moverte al método anterior en relación con la posición actual en el registro.
  • Haz clic en Down the Stack Trace Ícono de Down the Stack Trace para moverte al método siguiente en relación con la posición actual en el registro.

Desplazamiento hasta el final del registro

Si haces clic en un mensaje específico, dejan de mostrarse los mensajes.

Para moverte rápidamente hasta el final del registro y ver el flujo de mensajes en tiempo real, sigue estos pasos:

  • Haz clic en Scroll to the End Ícono de Scroll to the End.
  • Presiona la tecla End.
  • Desplázate o presiona la tecla Page Down hasta llegar al final.

Impresión y guardado en un archivo

Para conservar la información de registro, puedes enviar el registro a una impresora, guardar el registro en un archivo PDF o copiar y pegar el registro en un archivo de texto.

Para imprimir el registro o guardarlo en un archivo PDF, sigue estos pasos:

  1. Haz clic en Print Ícono de Print.
  2. En el diálogo Print de Android Studio, puedes cambiar los parámetros de impresión y luego hacer clic en Print.
  3. En el diálogo Print del sistema operativo, puedes cambiar los parámetros de impresión y luego hacer clic en Print.
  4. Puedes configurar los parámetros para enviar el registro a una impresora o guardarlo en un archivo PDF.

Para copiar el registro en un archivo de texto, sigue estos pasos:

  1. En el monitor de logcat, selecciona y luego copia el texto del registro.
  2. Presiona Ctrl+A (⌘A) para seleccionar todo el texto.

  3. Abre un editor de texto y pega el texto en un archivo.

Limpieza y reinicio del registro

Para limpiar (vaciar) el registro completo, haz lo siguiente:

  • Haz clic en Clear logcat Ícono de Clear logcat.

Si existe un problema y el registro deja de avanzar, puedes reiniciarlo:

  • Haz clic en Restart Ícono de Restart.

Adición de mensajes de registro a tu código

La clase Log te permite crear mensajes de registro que aparecen en el monitor de logcat. Por lo general, debes usar los siguientes métodos de registro, que se ordenan de mayor a menor prioridad:

Consulta la descripción de la clase Log para obtener una lista más completa de opciones.

No debes compilar registros detallados en tu app, salvo durante el desarrollo. Los registros de depuración se compilan seccionados durante el tiempo de ejecución, mientras que los registros de error, advertencia e información se conservan siempre.

Para cada método de registro, el primer parámetro debe ser una etiqueta exclusiva y el segundo es el mensaje. La etiqueta de un mensaje de registro del sistema es una string breve que indica el componente del sistema a partir del cual se origina el mensaje (por ejemplo, ActivityManager ). Tu etiqueta puede ser cualquier string que te resulte útil; por ejemplo, el nombre de la clase actual.

Una buena convención es declarar una constante TAG en tu clase para usarla en el primer parámetro. Por ejemplo, puedes crear un mensaje de registro de información de la siguiente manera:

private static final String TAG = "MyActivity";
...
Log.i(TAG, "MyClass.getView() — get item number " + position);

Nota: los nombres de etiquetas con más de 23 caracteres se truncan en el resultado de logcat.