El sistema de registro de eventos (logging) de Android proporciona un mecanismo para recoger y mostrar los mensajes de depuración del sistema.

La utilidad Logcat vuelca en pantalla el registro de mensajes del sistema, que incluye:

  • Mensajes de error que lanza el emulador
  • Mensajes que hayas escrito desde la aplicación usando la clase Log del paquete android.util.

La manera más cómoda de utilizar LogCat es desde el mismo entorno de desarrollo. En Android Studio Puedes encontrar los mensajes del registro de eventos en la ventana de herramientas Android, que puedes abrir usando el botón Android de la parte inferior de la pantalla, si se están mostrando los botones de las Tool Windows, o bien usar el menú View > Tool Windows > Android

StudioLog01

Si ejecutas cualquier aplicación Android, podrás ver que en esa pestaña LogCat aparecen diversos mensajes de distintos colores que diferencian la importancia de los mensajes en función de su nivel (Level) que se muestra en la primera columna. En azul se mostrarán los mensajes de aviso (Warn), en rojo los errores, y en negro los menos importantes.

Puedes encontrar los siguientes niveles de mensajes en el registro de eventos, ordenados desde el nivel con menos prioridad hasta el de más prioridad:

  • Verbose (V)
    • Mensajes de comunicación para el usuario de la aplicación, donde se puede mostrar de manera detallada el funcionamiento de un proceso que esté realizando la aplicación.
  • Debug (D)
    • Mensaje de depuración de la aplicación destinado a su desarrollador para depurar el funcionamiento de la misma.
  • Info (I)
    • Mensaje con carácter informativo
  • Warn (W)
    • Mensaje de aviso (warning) ante un error de poca importancia que no impide la ejecución correcta de la aplicación.
  • Error (E)
    • Mensaje de error que avisa de una posible situación que impida el correcto funcionamiento de la aplicación.
  • Assert (F)
    • Mensaje de error crítico (terrible failure).

Además del nivel del mensaje, se muestra en cada columna el PID (identificador de proceso), TID (identificador de tarea), Application (nombre de la aplicación), Tag (etiqueta) y Text (texto del mensaje).

Para generar un mensaje de manera explícita desde el código de la aplicación, puedes usar los métodos que ofrece la clase Log para cada nivel de mensaje:

static int v (String tag, String msg)

static int d (String tag, String msg)

static int i (String tag, String msg)

static int w (String tag, String msg)

static int e (String tag, String msg)

Todos estos métodos disponen de un primer parámetro tag donde se debe especificar una etiqueta que posibilita agrupar los mensajes por etiquetas. Esta etiqueta es la que se muestra en la columna Tag del LogCat. En el segundo parámetro msg se debe indicar el texto del mensaje que aparecerá en la columna Text del LogCat.

Dispones además de los mismos métodos con un tercer parámetro para indicar una excepción.

Es una buena práctica asignar a la etiqueta una constante declarada en la aplicación. De esta forma se evitan errores al indicar la etiqueta:

private static final String TAG_ACTIVITY = "NombreDeLaActivity";

Al hacerlo así, la llamada a uno de los métodos anteriores puedes realizarla, por ejemplo, de la siguiente manera:

Log.d(TAG_ACTIVITY, "Estoy depurando la aplicación");

Como habrás podido comprobar, el LogCat puede llegar a mostrar una gran cantidad de mensajes, por lo que es habitual aplicar algún tipo de filtro o búsqueda para localizar los mensajes deseados. Para ello, en la parte superior de la utilidad puedes encontrar una barra de herramientas como la siguiente:

StudioLog02

En ella puedes utilizar el cuadro de texto para buscar en el texto de los mensajes. La lista desplegable permite seleccionar el nivel más bajo de prioridad de los mensajes a mostrar. Si se elige, por ejemplo, el nivel warn, se mostrarán todos los mensajes correspondientes a warn, error y assert.

La lista de filtros almacenados de la parte derecha posibilita crear filtros por cualquier campo y tenerlos almacenados para utilizarlos en cualquier momento con sólo seleccionarlos en la lista. Dispones de los botones (+ y -) para añadir y eliminar los filtros.

StudioLog03

Como puedes comprobar puedes hacer los filtros en función de la etiqueta asignada a los mensajes (Log Tag), del contenido de los mensajes (Log Message), del nombre del paquete (Package Name), del identificador del proceso (PID), y del nivel de prioridad del mensaje (Log Level).

Por ejemplo, puedes crear un mensaje de depuración al finalizar la creación de la activity realizando la llamada a Log.d() desde el archivo que contiene el código fuente Java de la activity, dentro del método onCreate de manera similar a la siguiente:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG_ACTIVITY, "Se ha creado la activity");
    }

Al utilizar la clase Log debes importar el paquete correspondiente (android.util.Log). Esto puedes hacerlo de manera automática al escribir el código, usando la combinación de teclas Alt+Intro.

StudioLog04

Tras realizar esta operación debe aparecer en la parte superior del código fuente, en el bloque de los imports, la línea: import android.util.Log;

Tras ejecutar la aplicación, puedes crear un filtro, en función del nombre de etiqueta, que te facilite la tarea de localizar el mensaje.

StudioLog05