Android Log.v(), Log.d(), Log.i(), Log.w(), Log.e() - ¿Cuándo usar cada uno?

Resuelto Jake Wilson asked hace 54 años • 7 respuestas

Los diferentes LogCatmétodos son:

Log.v(); // Verbose
Log.d(); // Debug
Log.i(); // Info
Log.w(); // Warning
Log.e(); // Error

¿Cuáles son las situaciones apropiadas para utilizar cada tipo de Logging? Sé que tal vez sea solo un poco de semántica y tal vez realmente no importe, pero para LogCatfiltrar en Android Studio y Eclipse, sería bueno saber que estoy usando los métodos adecuados en los momentos apropiados.

Jake Wilson avatar Jan 01 '70 08:01 Jake Wilson
Aceptado

Vayamos en orden inverso:

  • Log.e : Esto es para cuando suceden cosas malas. Utilice esta etiqueta en lugares como dentro de una declaración de captura. Usted sabe que ha ocurrido un error y por lo tanto está registrando un error.

  • Log.w : Utilízalo cuando sospeches que está sucediendo algo turbio. Es posible que no esté completamente en modo de error, pero tal vez se recuperó de algún comportamiento inesperado. Básicamente, use esto para registrar cosas que no esperaba que sucedieran pero que no son necesariamente un error. Algo así como "oye, esto sucedió y es extraño , deberíamos investigarlo".

  • Log.i : utilice esto para publicar información útil en el registro. Por ejemplo: que te has conectado exitosamente a un servidor. Úselo básicamente para informar éxitos.

  • Log.d : utilice esto con fines de depuración . Si desea imprimir un montón de mensajes para poder registrar el flujo exacto de su programa, utilice esto. Si desea mantener un registro de valores variables, utilice esto.

  • Log.v : Utilízalo cuando quieras volverte completamente loco con tu registro. Si por alguna razón ha decidido registrar cada detalle en una parte particular de su aplicación, use la etiqueta Log.v.

Y como beneficio adicional...

  • Log.wtf : Utilízalo cuando las cosas salgan terriblemente mal. Ya conoces esos bloques de captura en los que detectas errores que nunca deberías recibir... sí, si quieres registrarlos usa Log.wtf
Kurtis Nusbaum avatar Oct 31 '2011 20:10 Kurtis Nusbaum

Los diferentes métodos son indicaciones de prioridad. Como los ha enumerado, van de menos a más importantes. Creo que la forma en que los asigna específicamente a los registros de depuración en su código depende del componente o aplicación en la que está trabajando, así como de cómo los trata Android en diferentes versiones de compilación (eng, userdebug y user). He trabajado bastante en los demonios nativos de Android, y así es como lo hago. Puede que no se aplique directamente a su aplicación, pero puede haber algunos puntos en común. Si mi explicación suena vaga, es porque algo de esto es más un arte que una ciencia. Mi regla básica es ser lo más eficiente posible, asegurarme de poder depurar razonablemente su componente sin afectar el rendimiento del sistema y siempre verificar si hay errores y registrarlos.

V - Impresiones de estado en diferentes intervalos, o ante cualquier evento que ocurra y que procese mi componente. También posiblemente impresiones muy detalladas de las cargas útiles de mensajes/eventos que mi componente recibe o envía.

D: Detalles de eventos menores que ocurren dentro de mi componente, así como cargas útiles de mensajes/eventos que mi componente recibe o envía.

I: el encabezado de cualquier mensaje/evento que mi componente reciba o envíe, así como cualquier parte importante de la carga útil que sea crítica para el funcionamiento de mi componente.

W: Cualquier cosa que suceda que sea inusual o sospechosa, pero no necesariamente un error.

E: Errores, es decir, cosas que se supone que no deben suceder cuando todo funciona como debería.

El error más grande que veo que comete la gente es que usan en exceso cosas como V, D e I, pero nunca usan W o E. Si, por definición, se supone que un error no debe suceder, o solo debe ocurrir muy raramente, entonces es extremadamente Es barato para usted registrar un mensaje cuando ocurre. Por otro lado, si cada vez que alguien presiona una tecla usted hace un Log.i(), está abusando del recurso de registro compartido. Por supuesto, use el sentido común y tenga cuidado con los registros de errores de cosas que están fuera de su control (como errores de red) o aquellos contenidos en bucles cerrados.

tal vez malo

Log.i("I am here");

Bien

Log.e("I shouldn't be here");

Con todo esto en mente, cuanto más se acerque su código a "listo para producción", más podrá restringir el nivel de registro base para su código (necesita V en alfa, D en beta, I en producción o posiblemente incluso W en producción). ). Debe analizar algunos casos de uso simples y ver los registros para asegurarse de que aún puede comprender en gran medida lo que sucede a medida que aplica un filtrado más restrictivo. Si utiliza el filtro a continuación, aún debería poder saber qué está haciendo su aplicación, pero tal vez no obtenga todos los detalles.

logcat -v threadtime MyApp:I *:S
John Michelau avatar Oct 31 '2011 20:10 John Michelau