2012-05-09 7 views
16

Ich versuche, einen Logger aus einer Yaml-Datei zu konfigurieren. Auf docs.python.org fand ich ein Beispiel dafür, wie eine YAML-Datei zu erstellen, und die Datei, die ich wie folgt aussieht erstellt:Python2.7: Logging-Konfiguration mit 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] 

Aber ich kann nicht ein Beispiel, wie laden die Config finden. Ich sah über etwas, das es mit dem Laden:

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

aber das wirft ein „Valueerror: Wörterbuch angeben keine Version“

Also meine Frage ist: Wie lade ich dies zu einem Logger in Python und Wie verwende ich Clogger und Flogger.

Antwort

16

Aus dem Lesen der python documentation, sehen wir, dass es einen erforderlichen Schlüssel in der Konfiguration gibt, die version sagt.

Sie müssen eine Zeile in der Konfiguration, die sagt

version: 1 

Oder Sie tun können:

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

Oh, ich völlig verfehlt, dass. danke nein es funktioniert wie ein Charme – Kempe

+5

Wie wäre es '' '' mit open ('logging.conf') als f: '' '' so wird die Datei geschlossen? – rbp