Registro mediante multiprocesamiento.

Tengo la siguiente clase de logger (como logger.py):

 import logging, logging.handlers import config log = logging.getLogger('myLog') def start(): "Function sets up the logging environment." log.setLevel(logging.DEBUG) formatter = logging.Formatter(fmt='%(asctime)s [%(levelname)s] %(message)s', datefmt='%d-%m-%y %H:%M:%S') if config.logfile_enable: filehandler = logging.handlers.RotatingFileHandler(config.logfile_name, maxBytes=config.logfile_maxsize,backupCount=config.logfile_backupCount) filehandler.setLevel(logging.DEBUG) filehandler.setFormatter(formatter) log.addHandler(filehandler) console = logging.StreamHandler() console.setLevel(logging.DEBUG) console.setFormatter(logging.Formatter('[%(levelname)s] %(message)s')) # nicer format for console log.addHandler(console) # Levels are: debug, info, warning, error, critical. log.debug("Started logging to %s [maxBytes: %d, backupCount: %d]" % (config.logfile_name, config.logfile_maxsize, config.logfile_backupCount)) def stop(): "Function closes and cleans up the logging environment." logging.shutdown() 

Para el registro, logger.start() una vez, y luego importo from logger import log a cualquier archivo de proyecto. Luego solo uso log.debug() y log.error() cuando sea necesario. Funciona bien desde cualquier lugar del script (diferentes clases, funciones y archivos) pero no funcionará en diferentes procesos que se realicen a través de la clase de multiprocesamiento.

Recibo el siguiente error: No handlers could be found for logger "myLog" .

¿Que puedo hacer?

de los documentos de Python: logging to a single file from multiple processes is not supported, because there is no standard way to serialize access to a single file across multiple processes in Python.

Consulte: http://docs.python.org/howto/logging-cookbook.html#logging-to-a-single-file-from-multiple-processes

BTW: Lo que hago en esta situación, es usar Scribe, que es un agregador de registro distribuido, al que inicio sesión a través de TCP. Esto me permite registrar todos los servidores que tengo en el mismo lugar, no solo todos los procesos.

Vea este proyecto: http://pypi.python.org/pypi/ScribeHandler