Proyecto

General

Perfil

Uso de la Clase SYSLOG en Python

Útima revisión: 9/3/2011

Objeto

Para reportar uso y errores de los scripts de Python (actualización de CM, importación, exportación, informes) usamos la clase SYSLOG.

Esta clase estándar permite guardar mensajes en el LOG del sistema clasificados por su origen (la aplicación que lo genera) y el nivel del mensaje (info, notice, warning, error, critical, etc.). La clase almacena además, de forma automática la hora y la fecha del sistema para que quede constancia de en qué momento se ha generado cada mensaje.

Uso

Para ello, cada script Python debería comenzar por importar la clase syslog

# Importar la clase
import syslog

Después, y antes de nada, es necesario abrir el fichero de LOG:

# Abrir el fichero de LOG
syslog.openlog(aplicacion, syslog.LOG_USER)

donde aplicacion es el mensaje informativo que se envía al LOG indicando la aplicación que está informando y que se volverá a usar posteriormente en todos los envíos. Por ejemplo, si quien el proceso que va a informar es el de actualizaciónd e CM, esta línea debería quedar así:

# Abrir el fichero de LOG
syslog.openlog("GONG actualizar_cm.py", syslog.LOG_USER)

A partir de este momento, se puede enviar mensajes informativos o de error (o de cualquier otro nivel) al LOG cambiando el texto y el nivel del mensaje.

Para enviar un mensaje informativo, incluir esta linea de código:

# Enviar mensaje informativo
syslog.syslog(syslog.LOG_NOTICE, mimensaje)

donde mimensaje es el mensaje informativo que se envía al LOG.

Por ejemplo, si se va informar de que el proceso a finalizado correctamente, esta linea podría quedar así:

# Enviar mensaje informativo
syslog.syslog(syslog.LOG_NOTICE, "Proceso finalizado correctamente")

Para enviar un mensaje de error, incluir esta linea de código:

# Enviar mensaje de error
syslog.syslog(syslog.LOG_ERR, mimensaje)

donde mimensaje es el mensaje de error que se envía al LOG.

Por ejemplo, si se va informar de que el proceso a fallado por la falta de un fichero, esta linea podría quedar así:

# Enviar mensaje de error
syslog.syslog(syslog.LOG_ERR, "No se encuentra el fichero " + filename)

No es necesario cerrar el fichero. Cuando el proceso que lo ha abierto finaliza, se cierra automáticamente.

Acuerdo de utilización

Inicialmente, pensamos en almacenar sólo mensajes de error para no saturar el LOG pero en función de las necesidades, este acuerdo podrá variarse.