Google+ Seguidores

sábado, 16 de diciembre de 2017

Modulo Logging para el registro de eventos - Librería estándar Python

Introducción:

El modulo logging de la librería estándar de Python, nos permite rastrear un evento dentro de un software. Por ejemplo, registrar un mensaje de error.

La ventaja de usar registros, es que se pueden configurar para desactivar la salida o guardarse en un archivo. Esta es una ventaja sobre una simple impresión de los errores.

El registro es un medio de seguimiento de eventos que ocurren cuando se ejecuta algún software. El desarrollador del software agrega las llamadas de registro a su código para indicar que se han producido ciertos eventos.


Imagen relacionada

El registro proporciona un conjunto de funciones de conveniencia para un uso de registro simple. Estos son: debug()info()warning()error() critical().



Las funciones de registro se nombran después del nivel o la gravedad de los eventos para los que se usan. Los niveles estándar y su aplicabilidad se describen a continuación (en orden creciente de gravedad):
NivelCuando es usado
DEBUGInformación detallada, generalmente de interés solo cuando se diagnostican problemas.
INFOConfirmación de que las cosas funcionan como se esperaba.
WARNINGUna indicación de que sucedió algo inesperado o indicativo de algún problema en el futuro cercano (por ejemplo, "espacio en disco bajo"). El software sigue funcionando como se esperaba.
ERRORDebido a un problema más serio, el software no ha podido realizar alguna función.
CRITICALUn error grave que indica que el programa en sí no puede continuar ejecutándose.


El nivel predeterminado es WARNING, lo que significa que solo se rastrearán los eventos de este nivel y superiores, a menos que el paquete logging esté configurado para hacer lo contrario.
Los eventos que se rastrean se pueden manejar de diferentes maneras. La forma más sencilla de manejar eventos rastreados es imprimirlos en la consola. Otra forma común es escribirlos en un archivo de disco.


Un ejemplo sencillo:


import logging
logging.warning("Cuidado!!!")
WARNING:root:Cuidado!!!

Este es un ejemplo sencillo del uso de logging. 
El mensaje impreso incluye la indicación del nivel y la descripción del evento, el cual es "Cuidado!!!".

Veamos otro ejemplo:


import logging
logging.warning("Cuidado!!!")
logging.info("Ya te lo advertí.")
WARNING:root:Cuidado!!!

Como pueden observar, el resultado ha sido el mismo que el ejemplo anterior, pero ¿Porqué?. El mensaje de INFO no se imprime ya que el nivel predeterminado es WARNING.

Registrar eventos dentro de un archivo:

Algo muy común es registrar estos eventos dentro de un archivo, esto lo podremos hacer de la siguiente manera:


import logging
logging.basicConfig(filename='registro.log',level=logging.DEBUG)
logging.debug('Este mensaje debe ir al archivo de regitro')
logging.info('Este tambien')
logging.warning('Y este')

Si vamos a nuestro directorio y abrimos el archivo:


DEBUG:root:Este mensaje debe ir al archivo de regitro
INFO:root:Este tambien
WARNING:root:Y este

Deberíamos ver algo como eso.


Cambiar formato de los mensajes:

También podemos cambiar el formato, o la forma en la que se muestra el mensaje, veamos un ejemplo:

import logging
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
logging.debug('This message should appear on the console')
DEBUG:This message should appear on the console

Uno de los usos que le podemos dar, es imprimir la el mensaje junto a la fecha y hora actual.

import logging
logging.basicConfig(format='%(asctime)s %(message)s')
logging.warning('es la fecha en que apareció este mensaje.')
2017-12-16 14:59:01,773 es la fecha en que apareció este mensaje.

Podríamos cambiar el formato de la fecha agregando el argumento "datefmt" de la siguiente manera:


import logging
logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
logging.warning('es la fecha en que apareció este mensaje.')
12/16/2017 03:08:21 PM es la fecha en que apareció este mensaje.

Ahora se ve mejor.

Bueno, creo que esto es suficiente, si quieres seguir aprendiendo a usar este modulo, te sugiero que vayas a la documentación de logging.

Mi nombres es Luis y fue un placer compartir mis conocimientos con todos ustedes :D.

No hay comentarios :
Write comentarios

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

Powered by Blogger .