Skip to content

Most visited

Recently visited

navigation

Herramienta de línea de comandos logcat

Logcat es una herramienta de línea de comandos que vuelca un registro de mensajes del sistema, incluidos los seguimientos de pila, los casos de error del sistema y los mensajes que escribas desde tu app con la clase Log.

En esta página se explica la herramienta de línea de comandos logcat, pero también puedes ver mensajes de registro desde la ventana Logcat en Android Studio. Para obtener información acerca de cómo visualizar y filtrar registros desde Android Studio, consulta Escribir y ver registros con Logcat.

Sintaxis de la línea de comandos

[adb] logcat [<option>] ... [<filter-spec>] ...

Puedes ejecutar logcat como comando de ADB o directamente en una solicitud de shell de tu emulador o dispositivo conectado. Para ver resultados de registro usando ADB, dirígete al directorio platform-tools/ de tu SDK y ejecuta lo siguiente:

$ adb logcat

Puedes crear una conexión de shell con un dispositivo y ejecutar lo siguiente:

$ adb shell
# logcat

Opciones

En la tabla siguiente se describen las opciones de línea de comandos de logcat.

Opción Descripción
-b <buffer> Carga o alterna búferes de registro para visualización, como events o radio. De forma predeterminada, se usa el búfer main. Consulta Ver búferes de registro alternativos.
-c Borra (vacía) el registro completo y finaliza.
-d Vuelca el registro en la pantalla y finaliza.
-f <filename> Escribe el resultado de los mensajes del registro en <filename>. El valor predeterminado es stdout.
-g Imprime el tamaño del búfer del registro especificado y finaliza.
-n <count> Fija la cantidad máxima de registros rotados en <count>. El valor predeterminado es 4. Requiere la opción -r.
-r <kbytes> Rota el archivo de registro cada <kbytes> de producción. El valor predeterminado es 16. Requiere la opción -f.
-s Fija la especificación predeterminada del filtro en el valor “silent”.
-v <format> Fija el formato de salida para los mensajes del registro. El formato predeterminado es brief. Para obtener una lista de los formatos admitidos, consulta Controlar el formato de los resultados de los registros.

Iniciar LogCat

Para ejecutar logcat, a través del shell de ADB, el uso general es el siguiente:

[adb] logcat [<option>] ... [<filter-spec>] ...

Puedes usar el comando logcat desde tu computadora de desarrollo o desde un shell de ADB remoto en una instancia del emulador o dispositivo. Para ver el resultado del registro en tu computadora de desarrollo, debes usar

$ adb logcat

y desde un shell de ADB remoto debes usar

# logcat

En la siguiente tabla se describen las opciones de la línea de comandos de logcat:

-c Borra (vacía) el registro completo y finaliza.
-d Vuelca el registro en la pantalla y finaliza.
-f <filename> Escribe el resultado de los mensajes del registro en <filename>. El valor predeterminado es stdout.
-g Imprime el tamaño del búfer del registro especificado y finaliza.
-n <count> Fija la cantidad máxima de registros rotados en <count>. El valor predeterminado es 4. Requiere la opción -r.
-r <kbytes> Rota el archivo de registro cada <kbytes> de producción. El valor predeterminado es 16. Requiere la opción -f.
-s Fija la especificación predeterminada del filtro en el valor “silent”.
-v <format> Fija el formato de salida para los mensajes del registro. El formato predeterminado es brief. Para obtener una lista de los formatos admitidos, consulta Controlar el formato de los resultados de los registros.

Filtrar resultados de registros

Todos los mensajes de registro de Android tienen una etiqueta y una prioridad asociadas a ellos.

Puedes obtener una lista de las etiquetas que se usan en el sistema, junto con las prioridades, ejecutando logcat y observando las dos primeras columnas de cada mensaje, indicadas como <priority>/<tag>.

A continuación, te mostramos un ejemplo de resultados de logcat en el que se muestra que el mensaje se relaciona con el nivel de prioridad “I” y la etiqueta “ActivityManager”:

I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}

Para reducir los resultados del registro a un nivel fácil de manejar, puedes restringir los resultados del registro usando expresiones de filtro. Las expresiones de filtro te permiten indicar al sistema las combinaciones de etiqueta y prioridad que te interesan; el sistema omite otros mensajes para las etiquetas especificadas.

Una expresión de filtro tiene este formato tag:priority ..., en el que tag indica la etiqueta de interés y priority indica el nivel de prioridad mínimo que se debe informar para esa etiqueta. Los mensajes para esa etiqueta que posean el nivel de prioridad especificado o un nivel superior se escriben en el registro. Puedes proporcionar cualquier cantidad de especificaciones tag:priority en una sola expresión de filtro. Las series de especificaciones están delimitadas por espacios en blanco.

A continuación, te mostramos un ejemplo de una expresión de filtro que suprime todos los mensajes del registro excepto los que tienen la etiqueta “ActivityManager”, con prioridad “Info” o más alta, y todos los mensajes del registro con la etiqueta “MyApp” y la prioridad “Debug” o más alta:

adb logcat ActivityManager:I MyApp:D *:S

El elemento final en la expresión anterior, *:S, fija el nivel de prioridad para todas las etiquetas en “silent”, lo cual garantiza que solo se muestren los mensajes del registro con “ActivityManager” y “MyApp”. Usar *:S es una excelente manera de garantizar que los resultados del registro se limiten a los filtros que especificaste explícitamente; permite que tus filtros sirvan como una “lista blanca” para los resultados del registro.

La siguiente expresión de filtro muestra todos los mensajes del registro con nivel de prioridad “warning” y más alta en todas las etiquetas:

adb logcat *:W

Si ejecutas logcat desde tu computadora de desarrollo (en lugar de ejecutarlo en un shell de ADB remoto), también puedes establecer una expresión de filtro predeterminada exportando un valor para la variable de entorno ANDROID_LOG_TAGS:

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

Ten en cuenta que el filtro ANDROID_LOG_TAGS no se exporta a la instancia del emulador o dispositivo si ejecutas logcat desde un shell remoto o con adb shell logcat.

Controlar el formato de los resultados de los registros

Los mensajes de registro contienen varios campos de metadatos además de la etiqueta y la prioridad. Puedes modificar el formato de salida para los mensajes de modo que muestren un campo de metadatos específico. Para hacerlo, usa la opción -v y especifica uno de los formatos de salida admitidos que se indican a continuación.

Al iniciar logcat, puedes especificar el formato de salida que desees usando la opción -v:

[adb] logcat [-v <format>]

A continuación, te mostramos un ejemplo de generación de mensajes con formato de salida thread:

adb logcat -v thread

Ten en cuenta que solo puedes especificar un formato de salida con la opción -v.

Ver búferes de registro alternativos

El sistema de registro Android mantiene varios búferes circulares para los mensajes de registro, y no todos los mensajes de registro se envían al búfer circular predeterminado. Para ver mensajes de registro adicionales, puedes ejecutar el comando logcat con la opción -b para solicitar la visualización de un búfer circular alternativo. Puedes ver cualquiera de los siguientes búferes alternativos:

La utilidad de la opción -b es la siguiente:

[adb] logcat [-b <buffer>]

A continuación, te mostramos un ejemplo de visualización de un búfer de registro que contenga mensajes de radio y telefonía:

adb logcat -b radio

Ver stdout y stderr

De forma predeterminada, el sistema Android envía los resultados de stdout y stderr (System.out y System.err) a /dev/null. En los procesos que ejecutan la MV Dalvik, puedes hacer que el sistema escriba una copia de los resultados en el archivo de registro. En ese caso, el sistema escribe los mensajes en el registro usando las etiquetas de registro stdout y stderr, ambas con prioridad I.

Para direccionar los resultados de esta manera, debes detener una instancia del emulador o dispositivo en ejecución y luego usar el comando setprop del shell para habilitar el redireccionamiento de los resultados. A continuación, te mostramos la forma de hacerlo:

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

El sistema retiene esta configuración hasta que finalices la instancia del emulador o dispositivo. Para usar la configuración como predeterminada en la instancia del emulador o dispositivo, puedes agregar una entrada a /data/local.prop en el dispositivo.

Registro desde el código

La clase Log te permite crear en tu código entradas de registro que aparezcan en la herramienta logcat. Entre los métodos de registro comunes se incluyen los siguientes:

Por ejemplo, usando la siguiente llamada:

Log.i("MyActivity", "MyClass.getView() — get item number " + position);

Los resultados de logcat se aproximan a los siguientes:

I/MyActivity( 1557): MyClass.getView() — get item number 1
This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.