2012-05-09 9 views
16

Estoy intentando configurar un registrador desde un archivo yaml. En docs.python.org he encontrado un ejemplo de cómo crear un archivo YAML, y el archivo que he creado se ve así:python2.7: configuración de registro con yaml

formatters: 
    simpleFormater: 
     format: '%(asctime)s - %(levelname)s: %(message)s' 
     datefmt: '%Y/%m/%d %H:%M:%S' 

handlers: 
    console: 
     class: logging.StreamHandler 
     formatter: simpleFormater 
     level: DEBUG 
     stream: ext://sys.stdout 
    file: 
     class : logging.FileHandler 
     formatter: simpleFormater 
     level: WARNING 
     filename: songinfo.log 

loggers: 
    clogger: 
     level: DEBUG 
     handlers: [console] 
    flogger: 
     level: WARNING 
     handlers: [file] 

root: 
    level: DEBUG 
    handlers: [console, file] 

Pero no puedo encontrar un ejemplo de cómo cargar la configuración. Vi algo acerca de la carga con:

logging.config.dictConfig(yaml.load(open('logging.conf', 'r'))) 

pero que lanza una "ValueError: diccionario no especifica una versión"

Así que mi pregunta es: ¿Cómo se carga a un registrador en Python y ¿Cómo uso clogger y flogger?

Respuesta

16

Al leer el python documentation, vemos que hay una clave obligatoria en la configuración que dice version.

Usted necesita una línea en la configuración de lo que dice

version: 1 

O bien, puede hacer:

with open('logging.conf') as f: 
    D = yaml.load(f) 
    D.setdefault('version', 1) 
    logging.config.dictConfig(D) 
+0

Oh me perdí totalmente eso. gracias no funciona como un encanto – Kempe

+5

¿qué tal '' '' con open ('logging.conf') como f: '' '' entonces el archivo se cierra? – rbp

Cuestiones relacionadas