Buscar..


Sintaxis

  • Log.v(String tag, String msg, Throwable tr)
  • Log.v(String tag, String msg)
  • Log.d(String tag, String msg, Throwable tr)
  • Log.d(String tag, String msg)
  • Log.i(String tag, String msg, Throwable tr)
  • Log.i(String tag, String msg)
  • Log.w(String tag, String msg, Throwable tr)
  • Log.w(String tag, String msg)
  • Log.e(String tag, String msg, Throwable tr)
  • Log.e(String tag, String msg)

Parámetros

Opción Descripción
-b (buffer) Carga un búfer de registro alternativo para ver, como eventos o radio. El búfer principal se utiliza por defecto. Consulte Visualización de búferes de registro alternativos.
-do Borra (vacía) todo el registro y sale.
-re Vuelca el registro en la pantalla y sale.
-f (nombre de archivo) Escribe la salida del mensaje de registro en (nombre de archivo). El valor predeterminado es stdout.
-sol Imprime el tamaño del búfer de registro especificado y sale.
-n (contar) Establece el número máximo de registros rotados a (contar). El valor predeterminado es 4. Requiere la opción -r.
-r (kbytes) Gira el archivo de registro cada (kbytes) de salida. El valor predeterminado es 16. Requiere la opción -f.
-s Establece la especificación de filtro por defecto en silencio.
-v (formato) Establece el formato de salida para los mensajes de registro. El valor predeterminado es formato breve.

Observaciones

Definición

Logcat es una herramienta de línea de comandos que descarga un registro de los mensajes del sistema, incluidos los seguimientos de la pila cuando el dispositivo emite un error y los mensajes que ha escrito desde su aplicación con la clase de registro .

Cuándo usar

Si está considerando usar los métodos System.out de Java para imprimir en la consola en lugar de usar uno de los métodos de registro de Android, entonces debe saber que básicamente funcionan de la misma manera. Sin embargo, es mejor evitar el uso de los métodos de Java porque la información adicional y el formato proporcionado por los métodos de registro de Android son más beneficiosos. Además, los métodos de impresión System.out se redirigen al método Log.i() .

Enlaces útiles

Filtrado de la salida logcat

Es útil filtrar la salida logcat porque hay muchos mensajes que no son de interés. Para filtrar la salida, abra el "Monitor de Android" y haga clic en el menú desplegable en la parte superior derecha y seleccione Editar configuración de filtro

Monitor de android

Ahora puede agregar filtros personalizados para mostrar los mensajes de interés, así como también filtrar las líneas de registro conocidas que pueden ignorarse de forma segura. Para ignorar una parte de la salida, puede definir una expresión regular . Aquí hay un ejemplo de exclusión de etiquetas coincidentes:

^(?!(HideMe|AndThis))

Esto se puede introducir siguiendo este ejemplo:

Crear nuevo filtro logcat

Lo anterior es una expresión regular que excluye entradas. Si desea agregar otra etiqueta a la lista negra , agréguela después de una tubería | personaje. Por ejemplo, si quisiera poner en la lista negra "GC", usaría un filtro como este:

^(?!(HideMe|AndThis|GC))

Para más documentación y ejemplos, visite Logging y use Logcat

Explotación florestal

Cualquier aplicación de Android de calidad hará un seguimiento de lo que está haciendo a través de los registros de aplicaciones. Estos registros permiten una fácil depuración de la ayuda para que el desarrollador pueda diagnosticar qué está sucediendo con la aplicación. La documentación completa de Android se puede encontrar aquí , pero a continuación se presenta un resumen:


Registro basico

La clase de Log es la fuente principal de escritura de registros de desarrollador, especificando una tag y un message . La etiqueta es lo que puede usar para filtrar los mensajes de registro para identificar qué líneas provienen de su Actividad en particular. Simplemente llama

Log.v(String tag, String msg);

Y el sistema Android escribirá un mensaje al logcat:

07-28 12:00:00.759 24812-24839/my.packagename V/MyAnimator: Some log messages
 └ time stamp             |  app.package┘     |    └ any tag  |
     process & thread ids ┘          log level┘               └ the log message

PROPINA:
Observe la identificación del proceso y la identificación del hilo. Si son iguales, ¡el registro proviene del hilo principal / UI!

Se puede usar cualquier etiqueta, pero es común usar el nombre de la clase como una etiqueta:

public static final String tag = MyAnimator.class.getSimpleName();

Niveles de registro

El registrador de Android tiene 6 niveles diferentes, cada uno de los cuales cumple un determinado propósito:

  • ERROR : Log.e()
    • Utilizado para indicar una falla crítica, este es el nivel impreso al lanzar una Exception .
  • WARN : Log.w()
    • Se usa para indicar una advertencia, principalmente para fallas recuperables
  • INFO : Log.i()
    • Se utiliza para indicar información de nivel superior sobre el estado de la aplicación
  • DEBUG : Log.d()
    • Se utiliza para registrar información que sería útil saber al depurar la aplicación, pero se interpondría al ejecutar la aplicación.
  • VERBOSE : Log.v()
    • Se utiliza para registrar información que refleja los pequeños detalles sobre el estado de la aplicación
  • ASSERT : Log.wtf()
    • Se utiliza para registrar información sobre una condición que nunca debería ocurrir.
    • wtf significa "What a Terrible Failure".

Motivación para la tala

La motivación para el registro es encontrar fácilmente errores, advertencias y otra información echando un vistazo a la cadena de eventos de la aplicación. Por ejemplo, imagine una aplicación que lee líneas de un archivo de texto, pero supone incorrectamente que el archivo nunca estará vacío. La traza de registro (de una aplicación que no registra) se vería así:

E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

Seguido de un montón de rastros de pila que eventualmente conducirían a la línea ofensiva, donde el paso con un depurador eventualmente conduciría al problema

Sin embargo, la traza de registro de una aplicación con el registro habilitado podría tener este aspecto:

V/MyApplication: Looking for file myFile.txt on the SD card
D/MyApplication: Found file myFile.txt at path <path>
V/MyApplication: Opening file myFile.txt
D/MyApplication: Finished reading myFile.txt, found 0 lines
V/MyApplication: Closing file myFile.txt
...
E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

Un vistazo rápido a los registros y es obvio que el archivo estaba vacío.


Cosas a tener en cuenta al iniciar sesión:

Si bien el registro es una herramienta poderosa que permite a los desarrolladores de Android obtener una mejor visión del funcionamiento interno de su aplicación, el registro tiene algunos inconvenientes.

Legibilidad del registro:

Es común que las aplicaciones de Android tengan varios registros que se ejecutan de forma síncrona. Como tal, es muy importante que cada registro sea fácil de leer y solo contenga información relevante y necesaria.

Actuación:

El registro requiere una pequeña cantidad de recursos del sistema. En general, esto no es motivo de preocupación, sin embargo, si se utiliza en exceso, el registro puede tener un impacto negativo en el rendimiento de la aplicación.

Seguridad:

Recientemente, se han agregado varias aplicaciones de Android al mercado de Google Play que permiten al usuario ver los registros de todas las aplicaciones en ejecución. Esta visualización no intencionada de datos puede permitir a los usuarios ver información confidencial. Como regla general, siempre elimine los registros que contienen datos no públicos antes de publicar su aplicación en el mercado.


Conclusión:

El registro es una parte esencial de una aplicación de Android, debido a la potencia que otorga a los desarrolladores. La capacidad de crear un registro de seguimiento útil es uno de los aspectos más desafiantes del desarrollo de software, pero la clase de registro de Android ayuda a hacerlo mucho más fácil.


Para más documentación y ejemplos, visite Logging y use Logcat

Iniciar sesión con un enlace a la fuente directamente desde Logcat

Este es un buen truco para agregar un enlace al código, por lo que será fácil saltar al código que emitió el registro.

Con el siguiente código, esta llamada:

MyLogger.logWithLink("MyTag","param="+param);


Resultará en:

07-26...012/com.myapp D/MyTag: MyFrag:onStart(param=3)  (MyFrag.java:2366) // << logcat converts this to a link to source!

Este es el código (dentro de una clase llamada MyLogger):

static StringBuilder sb0 = new StringBuilder(); // reusable string object

public static void logWithLink(String TAG, Object param) {
    StackTraceElement stack = Thread.currentThread().getStackTrace()[3];
    sb0.setLength(0);
    String c = stack.getFileName().substring(0, stack.getFileName().length() - 5); // removes the ".java"
    sb0.append(c).append(":");
    sb0.append(stack.getMethodName()).append('(');
    if (param != null) {
        sb0.append(param);
    }
    sb0.append(") ");
    sb0.append(" (").append(stack.getFileName()).append(':').append(stack.getLineNumber()).append(')');
    Log.d(TAG, sb0.toString());
}

Este es un ejemplo básico, se puede extender fácilmente para emitir un enlace a la persona que llama (sugerencia: la pila será [4] en lugar de [3]), y también puede agregar otra información relevante.

Usando el Logcat

Logcat es una herramienta de línea de comandos que descarga un registro de los mensajes del sistema, incluidos los seguimientos de la pila cuando el dispositivo emite un error y los mensajes que ha escrito desde su aplicación con la clase de registro.

La salida de Logcat se puede mostrar en el Android Monitor de Android Studio o con la línea de comandos adb.

En Android Studio

Mostrar haciendo clic en el icono "Android Monitor": introduzca la descripción de la imagen aquí O presionando Alt + 6 en Windows / Linux o CMD + 6 en Mac.

a través de la línea de comando:

Uso simple:

$ adb logcat

Con marcas de tiempo:

$ adb logcat -v time

Filtrar por texto específico:

$ adb logcat -v time | grep 'searchtext'

Hay muchas opciones y filtros disponibles para la línea de comandos logcat , documentados aquí .
Un ejemplo simple pero útil es la siguiente expresión de filtro que muestra todos los mensajes de registro con "error" de nivel de prioridad, en todas las etiquetas:

$ adb logcat *:E

Generando código de registro

Live templates Android Studio pueden ofrecer varios accesos directos para un registro rápido.
Para usar las plantillas de Live, todo lo que necesita hacer es comenzar a escribir el nombre de la plantilla y presionar TAB o ingresar para insertar la declaración.

Ejemplos:

  • logi → se convierte en → android.util.Log.i(TAG, "$METHOD_NAME$: $content$");
    • $METHOD_NAME$ se reemplazará automáticamente con el nombre de su método, y el cursor esperará a que se llene el contenido.
  • loge → igual, por error
  • etc. para el resto de los niveles de registro.

La lista completa de plantillas se puede encontrar en la configuración de Android Studio ( ALT + sy tipo "en vivo"). Y también es posible agregar sus plantillas personalizadas.

Si encuentra que Android Studio Live templates Android Studio Live templates no son suficientes para sus necesidades, puede considerar Android Postfix Plugin

Esta es una biblioteca muy útil que le ayuda a evitar escribir la línea de registro manualmente.

La sintaxis es absolutamente simple:

.log - Logging. Si hay una variable constante "TAG", use "TAG". Si no, use el nombre de la clase.

introduzca la descripción de la imagen aquí

Uso de Android Studio

  1. Ocultar / mostrar información impresa: Captura de pantalla

  2. Control de verbosidad del registro: Captura de pantalla de verbosidad de registro

  3. Deshabilitar / habilitar la ventana de registro de apertura al iniciar la aplicación ejecutar / depurar Desactivar la captura de pantalla de registro de apertura

Borrar registros

Para borrar (vaciar) el registro completo:

adb logcat -c


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow