La ventana Logcat de Android Studio te ayuda a depurar tu app, ya que muestra registros de tu dispositivo en tiempo real, por ejemplo, los mensajes que agregaste a tu app con la clase Log
, mensajes de servicios que se ejecutan en Android o mensajes del sistema, como cuando se produce la recolección de elementos no utilizados. Si la app genera una excepción, Logcat muestra un mensaje y, a continuación, el seguimiento de pila asociado que contiene los vínculos a la línea de código.
Comienza a usar la ventana Logcat
Para ver los mensajes de registro de tu app, haz lo siguiente:
- En Android Studio, compila y ejecuta tu app en un dispositivo físico o emulador.
- Selecciona View > Tool Windows > Logcat en la barra de menú.
De forma predeterminada, Logcat se desplaza hasta el final. Si haces clic en la vista de Logcat o te desplazas hacia arriba con la rueda del mouse, se desactivará esta función. Para volver a activarla, haz clic en Scroll to the End en la barra de herramientas. También puedes usar la barra de herramientas para borrar, pausar o reiniciar Logcat.
Figura 1: Logcat da formato a los registros para facilitar el análisis de información útil, como etiquetas y mensajes, y la identificación de diferentes tipos de registros, como advertencias y errores.
Cómo leer registros
Cada registro tiene una fecha, una marca de tiempo, un ID de proceso y de subproceso, una etiqueta, un nombre de paquete, una prioridad y un mensaje asociados. Las diferentes etiquetas tienen un color único que ayuda a identificar el tipo de registro. Cada entrada de registro tiene una prioridad de FATAL
, ERROR
, WARNING
, INFO
, DEBUG
o VERBOSE
.
Por ejemplo, el siguiente mensaje de registro tiene la prioridad DEBUG
y una etiqueta ProfileInstaller
:
2022-12-29 04:00:18.823 30249-30321 ProfileInstaller com.google.samples.apps.sunflower D Installing profile for com.google.samples.apps.sunflower
Configura la vista de registro
En la vista de registro estándar, se muestran la fecha, el proceso de tiempo y el ID del subproceso, la etiqueta, el nombre del paquete, la prioridad y el mensaje asociados a cada registro. De forma predeterminada, las líneas del mensaje no se incluyen en la vista de registro, pero puedes usar la opción Soft-Wrap de la barra de herramientas de Logcat.
Puedes cambiar a la vista Compact con menos datos de visualización. Para ello, haz clic en Configure Logcat Formatting Options desde barra de herramientas Logcat.
Para configurar aún más la información que deseas que se muestre, selecciona Modify Views y elige si quieres ver la marca de tiempo, las etiquetas, los IDs de los procesos o los nombres de los paquetes que se muestran.
Cómo cambiar el esquema de colores
Para cambiar el esquema de colores, navega a Android Studio > Settings > Editor > Color Scheme. Para cambiar el esquema de colores de tu vista de registro, selecciona Android Logcat. Para cambiar el esquema de colores de tu filtro, selecciona Logcat Filter.
Parámetros de configuración adicionales
Para ver parámetros de configuración adicionales, navega a Android Studio > Settings > Tools > Logcat. Desde allí, puedes elegir el tamaño del búfer del ciclo Logcat, el filtro predeterminado para las nuevas ventanas de Logcat y si deseas agregar filtros del historial al autocompletado.
Usa Logcat en varias ventanas
Las pestañas te ayudan a cambiar fácilmente entre diferentes dispositivos o consultas. Puedes hacer clic en New Tab para crear varias pestañas de Logcat. Si haces clic con el botón derecho en una pestaña, podrás cambiarle el nombre y reorganizarla.
Además, puedes dividir la vista dentro de una pestaña para ayudarte a comparar con más facilidad entre dos conjuntos de registros. Para crear una división, haz clic con el botón derecho en la vista de registro o haz clic en la opción Split Panels de la barra de herramientas y selecciona Split right o Divide. Para cerrar una división, haz clic con el botón derecho y selecciona Close. Cada división te permite establecer su propia conexión de dispositivo, opciones de vista y consulta.
Figura 2: Divide las ventanas Logcat en Android Studio.
En la barra de herramientas de Logcat, puedes desplazarte hasta el final de los registros o puedes hacer clic en una línea en particular para mantener visible esa línea.
Consulta registros con la búsqueda de pares clave-valor
En Android Studio, puedes generar búsquedas de pares clave-valor directamente desde el campo de búsqueda principal. Este sistema de consultas proporciona la precisión de lo que deseas consultar y también excluye registros según los pares clave-valor. Si bien tienes la opción de usar expresiones regulares, no tienes que depender de ellas para las consultas. Para ver sugerencias, presiona Ctrl
+ Space
en el campo de consulta.
Figura 3: Presiona Ctrl
+ Space
en el campo de consulta para ver una lista de consultas sugeridas.
Estos son algunos ejemplos de las claves que puedes usar en tu consulta:
tag
: Coincide con el campotag
de la entrada de registro.package
: Coincide con el nombre del paquete de la app de registro.process
: Coincide con el nombre del proceso de la app de registro.message
: Coincide con la parte del mensaje de la entrada de registro.level
: Coincide con el nivel de registro grave especificado o con uno más alto, por ejemplo,DEBUG
.age
: Coincide si la marca de tiempo de la entrada es reciente. Los valores se especifican como un número seguido de una letra que denota la unidad de tiempo:s
para segundos,m
para minutos,h
para horas yd
para días. Por ejemplo,age: 5m
filtra solo los mensajes que se registraron en los últimos 5 minutos.
Negación y expresiones regulares
Los siguientes campos admiten la negación y la coincidencia de expresiones regulares: tag
, package
, message
y line
.
La negación se expresa anteponiendo un -
al nombre del campo. Por ejemplo, -tag:MyTag
coincide con entradas de registro cuyo tag
no contiene la cadena MyTag
.
La coincidencia de expresiones regulares se expresa cuando se agrega un ~
al nombre del campo.
Por ejemplo, tag~:My.*Tag
.
Se pueden combinar los modificadores de expresión y de expresión regular. Por ejemplo, -tag~:My.*Tag
.
Operadores lógicos y paréntesis
El lenguaje de consulta es compatible con los operadores AND
y OR
, que se expresan entre &
y |
, y los paréntesis. Por ejemplo:
(tag:foo | level:ERROR) & package:mine
Ten en cuenta que se aplica la prioridad de operador normal, por lo que sucede lo siguiente:
tag:foo | level:ERROR & package:mine
Se evalúa de la siguiente manera:
tag:foo | (level:ERROR & package:mine)
Operadores lógicos implícitos
Si no se aplican operadores lógicos, el lenguaje de consulta evalúa de forma automática varios términos de filtro key-value
no negados con la misma clave que una OR
y todo lo demás con un AND
.
Por ejemplo:
tag:foo tag:bar package:myapp
Se evalúa de la siguiente manera:
(tag:foo | tag:bar) & package:myapp
Pero:
tag:foo -tag:bar package:myapp
Se evalúa de la siguiente manera:
tag:foo & -tag:bar & package:myapp
Si varios términos de consulta están separados por espacios en blanco sin un operador lógico, se tratan como AND con una prioridad baja. Por ejemplo, el término foo bar tag:bar1 | tag:bar2
es equivalente a 'foo bar' & (tag: bar1 | tag: bar2)
.
Consultas especiales
package:mine
La clave de paquete admite un valor especial mine
. Este valor especial coincide con cualquier nombre de paquete que se encuentre en el proyecto abierto.
level
La consulta level
coincide con el nivel de registro del mensaje de Logcat, en el que el nivel de entrada de registro es mayor o igual que el nivel de consulta.
Por ejemplo, level:INFO
coincide con cualquier entrada de registro con un nivel de registro de INFO
, WARN
, ERROR
o ASSERT
. El nivel no distingue mayúsculas de minúsculas. Los niveles válidos son VERBOSE
, DEBUG
, INFO
, WARN
, ERROR
y ASSERT
.
age
La consulta age
coincide con las entradas según su marca de tiempo y tiene el formato age:<number><unit>
, donde
<number>
es un número entero<unit>
es uno des
,m
,h
yd
(segundos, minutos, horas y días).
En la siguiente lista, la consulta age
coincide con los mensajes de registro que tienen una marca de tiempo en el rango descrito por el valor. Por ejemplo, la consulta age:5m
hace coincidir las entradas con una marca de tiempo no antes de 5 minutos atrás.
age:30s
age:5m
age:3h
age:1d
Ten en cuenta que la marca de tiempo se compara con la marca de tiempo del host, no con el dispositivo conectado. Si la hora del dispositivo no está configurada correctamente, es posible que esta consulta no funcione como se espera.
Clave is
Puedes usar la clave is
de la siguiente manera:
is:crash
coincide con las entradas de registro que representan una falla de la aplicación (nativa o Java).is:stacktrace
coincide con las entradas de registro que representan lo que parece un seguimiento de pila de Java, sin importar el nivel de registro.
Clave name
La clave name
te permite proporcionar un nombre único a un filtro guardado para que se pueda identificar con facilidad en el menú desplegable del historial del filtro. Aunque no recibas un error por especificar name
más de una vez, el IDE solo usará el último valor especificado para name
en la consulta.
Visualiza el historial de consultas
Puedes ver tu historial de consultas si haces clic en Show history junto al campo de consulta. Si deseas marcar una consulta para que permanezca en la parte superior de la lista en todos tus proyectos de Studio, haz clic en la estrella que se encuentra a su lado. También puedes usar la clave name:
para que las búsquedas favoritas sean más fáciles de reconocer. Para obtener más información, lee Consultas especiales.
Figura 4: Para marcar una consulta como favorita, haz clic en la estrella junto a ella.
Seguimiento de los registros de fallas o reinicios de la app
Cuando Logcat detecte que el proceso de tu app se detuvo y se reinició, muestra un mensaje en el resultado, como PROCESS ENDED
y PROCESS STARTED
.
Cuando se reinicia Logcat, se conserva la configuración de tu sesión, como divisiones de pestañas, filtros y opciones de vista, para que puedas continuar con tu sesión fácilmente.
Figura 5: Cuando se reinicia el proceso de tu app, Logcat imprime un mensaje que indica que el proceso finalizó y, luego, se inició.