Conoce los diferentes niveles de logging

El logging es una de las piezas más fundamentables a la hora de programar, nos permite realizar un seguimiento continuo del funcionamiento de nuestro programa.

Una buena colocación de estas líneas informativas, nos va a ahorrar mucho tiempo y muchos dolores de cabeza a la hora de hacer debug a nuestro programa o tratar de localizar un error en el mismo, por muy pequeño que sea.

Existen variaciones dependiendo del lenguaje, la plataforma, framework o librerías utilizadas para colocar nuestras lineas log, pero si algo suelen compartir todos, son sus correspondientes niveles.

Los niveles actuan a modo de filtro, normalmente podremos configurar a través de un archivo de configuración o un flag del compilador el nivel mínimo que deseamos para mostrar estos mensajes, esto es de lo que se va a tratar entrada, cómo colocar correctamente tus líneas de log.

Normalmente los niveles son los siguientes, en un orden de importancia descendiente:


Fatal

Los errores fatales, tal y como su nombre indican son errores críticos dentro de la aplicación, normalmente estos errores dan lugar a un crash, bloqueo o un mal funcionamiento general de la aplicación, coloca estas líneas en las partes críticas de tu aplicación y en procesos importantes o con gran dependencia para desempeñar su funcionamiento, nos ayudará a resolver los errores más graves de una forma rápida y eficiente.


Error

Este nivel está diseñado para los errores comúnes o más normales, normalmente un error de este nivel no interrumpe el funcionamiento o el desempeño de tu programa, pero sí que afectará a alguna característica o proceso concreto, la mayoría de errores que no sean de importancia crítica o de alta relevancia se colocarán en este nivel.

Estos mensajes nos ayudarán a resolver errores en algunas partes o características concretas de nuestra aplicación, ya que se centran primordialmente en el mal funcionamiento de la misma pero sin llegar a tratarse de un error crítico o bloqueador.

En caso de ausencia del nivel «fatal» colocaremos los errores críticos también en este nivel.


Warning

Este es el nivel designado para las advertencias, las advertencias no son errores, pero si que pueden acabar desembocando en un error.

Normalmente utilizamos el nivel de warning para indicar que algo no está funcionando como es debido, por ejemplo cuando no recibimos todos los parámetros requeridos o alguno de sus datos son inusuales, cuando se realizan llamadas desconocidas a ciertas funciones, o cuando la aplicación comienza a comportarse de manera inusual o sospechosa.

Estos mensajes nos ayudarán a resolver los «glitches» de nuestro programa, ya que la gran mayoría serán detectados por nuestros mensajes de advertencia si los hemos colocado correctamente.


Info

El nivel de información está destinado normalmente a la información específica para el usuario y a un nivel muy básico de depuración.

Por ejemplo, utilizaremos los mensajes informativos para registrar algunos parámetros útiles a la hora de depuración, versión de programa, sistema operativo, si se ha realizado una conexión al servidor correctamente, etc etc… pero núnca entraremos en detalles muy técnicos, sólo la información básica tanto del entorno como del comportamiento del programa.

Si tu programa realiza varios pasos, como por ejemplo la conexión con un servidor antes de realizar una tarea, utiliza estas etiquetas para indicar los pasos que está siguiendo tu programa.

Estos mensajes se centrarán en ayudarnos a comprender el escenario en el que se está corriendo nuestro programa, sin entrar núnca en detalles técnicos, pero nos ayudarán por ejemplo a conocer en que parte nuestro programa ha empezado a funcionar de manera incorrecta.


Debug

Este es el nivel destinado a la depuración, en él iremos colocando ya la información más relevante a la hora de depurar y analizar nuestra aplicación, los argumentos y variables de las funciones o pasos relevantes, lo que es un análisis detallado de su comportamiento.

Normalmente estos mensajes son los que más nos ayudarán a la hora de depurar nuestra aplicación, ya que veremos en ellos gran parte detallada de su comportamiento y el entorno en el que se está desarrollando.


Verbose o trace

Este nivel es un nivel similar al «debug» pero aún más detallado, hay gente que lo define como el «log paranoíco», aquí colocaremos ya los mensajes de debug más detallados, por ejemplo un mensaje con todos los parámetros que recibe una función, sus benchmark o incluso los pasos prácticamente línea por línea.

Estas líneas informativas ya están más destinadas hacia el rediseño y la optimización de un programa, normalmente no deben de ser necesarias si buscamos sólo reparar un error, ya que con los mensajes de debug tendremos más que suficiente.


WTF

Este nivel lo añado como bonus, es visto en algunos entornos y además resulta bastánte gracioso por su similitud con la abreviación de «What the fuck», efectivamente, podemos asimilarlo como tál, ya que en este nivel se colocan las líneas de error de los bloques de depuración que núnca deberían ocurrir, supongo que ya habreis visto en alguna parte el típico comentario «// This never should occurrs», pues en estos casos es el nivel donde colocaríamos los mensajes.

Realmente no tiene mucha utilidad, ya que suelen ser casos que núnca deben ocurrir, y si ocurren, es que la hemos liado mucho o a nuestro programa se le han aflojado unos cuantos tornillos.


Espero que con esto quede un poco más claro en que niveles colocar tus mensajes de información o depuración a la hora de programar, recuerda que colocarlos es muy importante a la hora de depurar y averiguar las causas de un error, y si encima lo haces de forma ordenada colocando cada uno en su correspondiente nivel podrás facilitar la lectura de estos mensajes filtrando únicamente los que necesites en ese momento.

Y recuerda, no utilices el nivel de información para debug, esto se hace muy amenudo y es una mala práctica, ya que lo único que haremos será llenar los logs de mensajes de depuración, cuando no serán necesarios en el 80% de los casos.

1 respuesta

  1. David dice:

    Gran aporte, oye mitsuha, me podrías orientar un poco en el mundo del desarrollo? Estoy estudiando para ello y me apasiona el mundo de la tecnología, la electrónica y la programación y quiero aprender más, y la verdad lo que más me falta es lo relacionado a la programación. Me encantaría que me contestases con un mail echándome un cable si te sobra algo de tiempo. Gran aporte como siempre.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.