bloqueo de ficheros...

Pedro A. Carrasco Ponce pedro.carrasco en iver.es
Vie Oct 29 07:43:40 CEST 2004


Pepe Aracil wrote:
> Hola.
> 
> Estoy acabando una aplicación para recepción de alarmas por teléfono en 
> python. Lanzo un proceso por cada linea (puerto serie) que tengo que atender.
> 
> Mi problema es que no sé como volcar los logs que genera cada proceso en un 
> mismo fichero. No puedo utilizar el módulo syslog, porque tiene que poder 
> funcionar en win32.

Yo utilizo el módulo logger, te posteo la clase que utilizo log:
------------------------ Fichero CLog ----------------------------
# -*- coding: ISO-8859-1 -*-
import logging

class __Log:
   def __init__(self):
     """Crea el logger para poder guardar los mensajes de loggin"""
     self.__logger = logging.getLogger('NombreUnico')
     hdlr = logging.FileHandler('Ficherode Log.log')
     formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
     hdlr.setFormatter(formatter)
     self.__logger.addHandler(hdlr)
     self.__logger.setLevel(logging.DEBUG)

   def info(self,cadena):
     self.__logger.info(cadena)

   def error(self,cadena):
     self.__logger.error(cadena)

   def critical(self,cadena):
     self.__logger.critical(cadena)

   def warning(self,cadena):
     self.__logger.warning(cadena)

   def debug(self,cadena):
     self.__logger.debug(cadena)

   def exception(self,cadena):
     self.__logger.exception(cadena)

__instance = None

def getLogger():
   global __instance
   if __instance is None:
     __instance = __Log()
   return __instance
--------------------------------- FIN ----------------------------
Utilizo un patrón de diseño Singleton, lo que asegura que hay una 
instancia sólo para toda la aplicación. Sólo tienes que hacer:

import CLog

log = CLog.getLogger()
log.info('Cadena')
log.warning('Prueba')
....

En la página de la ayuda del módulo logger tienes más información.

Un saludo.

-- 
Pedro




Más información sobre la lista de distribución Python-es