Logcat — qué es, niveles de logging y trabajo con logs

Autor: IT Sectr Publicado: 2026-05-06 Tiempo de lectura: 8 min

Logcat es una herramienta del Android SDK para ver mensajes del sistema y registros de aplicaciones en tiempo real, disponible a través de ADB o la consola integrada de Android Studio. Según Android Developers, Logcat recopila mensajes de todos los procesos del sistema, los filtra por niveles de prioridad y etiquetas, y permite al desarrollador diagnosticar errores, rastrear la ejecución del código y analizar el rendimiento. Logcat es la fuente principal de información al depurar aplicaciones Android.

Puntos clave

  • Logcat — ventana de consola en Android Studio para ver logs del sistema Android en tiempo real
  • Niveles de log — VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT — determinan la importancia del mensaje y el umbral de filtrado
  • Filtrado por etiquetas, niveles y palabras clave permite aislar los logs de una aplicación específica del flujo general
  • ADB logcat — comando de terminal para acceder a los logs sin Android Studio, mediante USB o Wi-Fi
  • Logs de crash — las excepciones con stack trace se registran en Logcat automáticamente y contienen el diagnóstico completo del fallo

Qué es Logcat en Android

Logcat es un búfer del sistema Android donde todos los procesos (incluyendo el kernel de Linux, system_server y las aplicaciones) escriben mensajes con un formato específico. La herramienta logcat, incluida en el Android SDK, lee este búfer y muestra los mensajes en tiempo real. A partir de Android 4.1 (API 16), el acceso a Logcat está restringido: las aplicaciones solo pueden leer sus propios logs, y los logs del sistema son accesibles a través de ADB con acceso de depuración.

Cada mensaje Logcat contiene cinco campos: fecha y hora, PID (identificador de proceso), TID (identificador de hilo), nivel de log y etiqueta. El formato es fijo e idéntico en todas las versiones de Android. Esto permite usar las utilidades grep, awk y sed para filtrar logs en pipelines CI/CD sin depender del IDE.

Los logs se almacenan en un búfer circular de tamaño fijo: 256 KB para main, 256 KB para system y 256 KB para events (Android 5+). Cuando el búfer se desborda, los mensajes antiguos se eliminan. El desarrollador puede cambiar el tamaño del búfer mediante la propiedad PROP logcat.size o en las opciones de desarrollador del dispositivo.

Niveles de log y etiquetas: estructura del mensaje Logcat

Seis niveles de logging determinan la importancia del mensaje. Android utiliza niveles estándar similares a otras plataformas pero con sus propios nombres de constantes en la clase Log. Elegir el nivel correcto ayuda a filtrar los logs de manera eficiente y evitar que los mensajes críticos se pierdan entre los secundarios.

NivelConstantePropósitoMostrado por defecto
VERBOSELog.vInformación de depuración máximamente detalladaNo
DEBUGLog.dMensajes de depuración para el desarrolladorNo
INFOLog.iMensajes informativos sobre el funcionamiento de la aplicación
WARNLog.wAdvertencias sobre problemas potenciales
ERRORLog.eErrores críticos y excepciones
ASSERTLog.wtfErrores que no deberían ocurrir nunca

Etiquetas: organización de mensajes por módulos

La etiqueta (tag) es una cadena de hasta 23 caracteres que identifica la fuente del mensaje. Se recomienda usar el nombre de la clase o del módulo como etiqueta: MainActivity, AuthManager, NetworkModule. Esto permite filtrar logs por un componente específico de la aplicación. Para mantener la uniformidad en el equipo, se pueden crear constantes de etiquetas en un archivo separado o usar la biblioteca Timber, que inserta automáticamente la etiqueta según el nombre de la clase.

Logs de crash y stack trace de excepciones

Cuando ocurre una excepción no controlada, Android escribe automáticamente el stack trace completo en Logcat, indicando la clase, el método, la línea de código y la cadena de llamadas. El log de crash contiene el tipo de excepción (NullPointerException, RuntimeException), el mensaje y la secuencia de llamadas desde el punto del fallo hasta el punto de entrada de la aplicación. Para analizar logs de crash de dispositivos de usuarios se utiliza Firebase Crashlytics, que sincroniza el stack trace con el mapa de ofuscación (mapping.txt para Android).

Logcat en Android Studio: interfaz, filtros y búsqueda

Android Studio proporciona una interfaz gráfica de Logcat accesible a través de View → Tool Windows → Logcat (Alt + 6). La ventana Logcat se actualiza en tiempo real, muestra todos los mensajes del dispositivo conectado y permite configurar filtros flexibles para aislar la información deseada del flujo general.

Filtrado por nivel y etiqueta

La lista desplegable Log Level filtra los mensajes por nivel mínimo: seleccione WARN para ver solo advertencias y errores, ocultando VERBOSE, DEBUG e INFO. El campo Search permite buscar por texto del mensaje o etiqueta — se admiten expresiones regulares, lo que resulta útil para encontrar mensajes por patrón.

Filtros guardados

Los Saved Filters son una potente función de Logcat en Android Studio. Puede crear un filtro que muestre solo los mensajes con la etiqueta de su aplicación (tag:MyApp) y nivel WARN+. Los filtros se conservan entre sesiones y están disponibles en la lista desplegable. Para proyectos con varios módulos, cree un filtro separado para cada módulo.

text
# Expresión de ejemplo para filtrar logs de la aplicación
tag:"MyApp" level:WARN # Solo WARN+ para MyApp
package:"com.mycompany" # Todos los logs del paquete
-tag:"okhttp" # Excluir logs de OkHttp

Exportación y análisis

Los logs de Logcat se pueden exportar a un archivo de texto mediante el icono Save to File. Esto es útil para adjuntarlos a tickets en Jira o analizar sesiones largas. El log exportado se puede abrir en cualquier editor de texto y aplicar grep para buscar patrones. Para una visualización formateada, use la utilidad logcat-color.

ADB logcat: comandos de terminal para trabajo avanzado

ADB logcat es la versión de consola de Logcat, accesible a través de Android Debug Bridge. Su principal ventaja es la posibilidad de ejecutarse en servidores CI, en scripts de automatización y en dispositivos sin Android Studio. ADB logcat admite todos los mismos filtros que la interfaz gráfica, pero con la flexibilidad de la línea de comandos.

Comandos básicos

El comando adb logcat sin argumentos muestra todo el búfer en tiempo real. Use Ctrl+C para detenerlo. El indicador -c limpia el búfer antes de comenzar la grabación — es útil cuando necesita aislar los logs de la prueba actual de los mensajes anteriores. El indicador -b selecciona el tipo de búfer: main, system, events, crash (Android 12+).

bash
# Limpiar el búfer e iniciar el registro con la etiqueta MyApp
adb logcat -c
adb logcat MyApp:D *:S

# Guardar logs en archivo
adb logcat -d > logcat_dump.txt

# Filtrado por PID del proceso
adb logcat --pid=12345

Filtrado con grep y awk

Combinar ADB con utilidades Unix ofrece la máxima flexibilidad. Por ejemplo, el filtro "*:S TAG:D" muestra solo los mensajes con la etiqueta TAG de nivel DEBUG y superior, ocultando todos los demás. Para ver solo excepciones, use grep -i exception. Para analizar la frecuencia de errores, aplique sort | uniq -c en la columna de etiqueta.

Logcat en CI/CD

En servidores CI, Logcat se utiliza para recopilar diagnósticos durante la ejecución de pruebas de UI. Un pipeline típico: limpiar el búfer antes de ejecutar las pruebas, guardar el volcado de logs como artefacto de compilación después de la ejecución. Si una prueba falla, los logs pueden determinar si el fallo fue causado por ANR, una excepción no controlada o un timeout de red.

Logging en código: Log.d, Log.e y Timber

La clase android.util.Log es la API integrada para escribir mensajes en Logcat. Log.v, Log.d, Log.i, Log.w, Log.e y Log.wtf aceptan una etiqueta (cadena) y un mensaje (cadena) o un mensaje + Throwable. Para formatear mensajes, use String.format o las plantillas de cadena de Kotlin — evite la concatenación de cadenas, que crea objetos innecesarios en el heap.

Biblioteca Timber

Timber es una biblioteca popular de Jake Wharton que elimina las deficiencias de la API Log integrada. Timber inserta automáticamente la etiqueta según el nombre de la clase que realizó el logging y no requiere pasar una etiqueta en cada llamada. Timber también admite logging condicional: en compilaciones Release, las llamadas Timber.v y Timber.d se pueden desactivar con una sola línea en Application.onCreate.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // API de Log integrada
        Log.d("MainActivity", "onCreate called")

        // Timber — etiqueta automática por nombre de clase
        Timber.d("onCreate called")
    }

    private fun loadData() {
        try {
            val result = fetchFromNetwork()
            Timber.i("Data loaded: $result")
        } catch (e: IOException) {
            Timber.e(e, "Failed to load data")
        }
    }
}

Logging condicional para Release

En compilaciones Release se recomienda desactivar los logs VERBOSE y DEBUG para reducir la carga del búfer Logcat y evitar la fuga de información sensible. Timber resuelve este problema mediante PlantingTree: en la variante Debug se planta DebugTree (registra todo), en Release — CrashReportingTree (registra solo ERROR a través de Crashlytics). La API Log integrada no admite logging condicional — el desarrollador debe envolver cada llamada con if (BuildConfig.DEBUG).

Preguntas frecuentes

Cómo limpiar el búfer de Logcat antes de ejecutar una prueba

Use el comando adb logcat -c antes de ejecutar una prueba. Alternativamente, en Android Studio haga clic en el botón Clear Logcat (papelera) en la ventana Logcat. La limpieza no afecta a los búferes del sistema de otros procesos, solo a la conexión actual.

Cómo aumentar el tamaño del búfer de Logcat

Ejecute adb logcat -G 2M para aumentar el búfer a 2 MB. El tamaño máximo depende del dispositivo: en Android 10+ hay disponible hasta 16 MB. El cambio se mantiene hasta que se reinicie el dispositivo. Para una configuración permanente, use build.prop en el device tree.

Por qué Logcat no muestra los logs de mi aplicación

Posibles causas: la aplicación se ejecuta en modo Release (logs Timber.v/d desactivados), el filtro de Logcat oculta el nivel necesario, o está conectado al dispositivo incorrecto. También verifique que haya seleccionado el proceso de su aplicación en Android Studio, no system_process.

Cómo leer logs de crash de Logcat

Busque la línea con FATAL EXCEPTION, debajo de la cual viene el stack trace completo. La primera línea contiene el tipo de excepción y el mensaje, las líneas siguientes contienen la cadena de llamadas con el archivo y la línea de código. Use grep "FATAL EXCEPTION" para una búsqueda rápida entre todos los logs.

Qué es ANR y cómo detectarlo en Logcat

ANR (Application Not Responding) es una situación en la que el hilo principal (UI thread) está bloqueado durante más de 5 segundos. En Logcat, ANR aparece como un mensaje con la etiqueta ActivityManager y el texto "ANR in ..." con el stack trace adjunto de todos los hilos. Use el filtro tag:ActivityManager level:ERROR.

Resumen

  • Logcat — búfer del sistema Android accesible a través de ADB y la ventana integrada de Android Studio
  • Seis niveles de logging (VERBOSE — ASSERT) determinan la importancia y el umbral de filtrado de los mensajes
  • Las etiquetas permiten agrupar mensajes por módulos de la aplicación para un filtrado rápido
  • ADB logcat con grep/awk es más flexible que la interfaz gráfica y adecuado para pipelines CI/CD
  • Timber simplifica el logging, inserta etiquetas automáticamente y desactiva los niveles Debug en Release
  • Los logs de crash con excepciones y stack trace se registran en Logcat automáticamente en cada fallo
  • Los filtros guardados en Android Studio aceleran el análisis diario de logs

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también