Python logger: Deja de ensuciar la salida por consola

Algo muy común (y que yo hago a menudo) es poner muchos prints a la hora de hacer debug, para saber donde las cosas van bien y dónde se empiezan a desviar del resultado esperado. Luego, quitarlos, no es mucho trabajo, pero si las cosas vuelven a ir mal, pues toca meterlos de nuevo.

He descubierto no hace mucho la librería logging, que viene por defecto incluida (forma parte del batteries included!) en python. Tiene varios niveles de salida, según la importancia de lo que estemos notificando. Podríamos utilizarlo con opciones para que el programa muestre una salida de información extra (verbose) determinada, tal y como se comenta por StackOverflow.

De forma muy general, aunque podéis ampliarlo mucho más en la documentación oficial, para activar la salida debug, simplemente hay que llamar al método con ese nombre de la librería logger:


import logging

logging.warning("Mensaje de depuración")

Y veremos como salida:

WARNING:root:Mensaje de depuración

Si lo intentas con logging.info() o con logging.debug() no mostrará salida, ya que por defecto sólo muestra las salidas con mayor o igual importancia que warning. Para cambiarlo, hay que poner al principio una breve configuración:

logging.basicConfig(level=logging.DEBUG)

Saludos, y a disfrutar!