2012-05-09 27 views
16

Próbuję skonfigurować program rejestrujący z pliku yaml. Na docs.python.org Znalazłem przykład, jak utworzyć plik yaml, a plik stworzyłem wygląda następująco:python2.7: rejestrowanie konfiguracji z 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] 

Ale nie mogę znaleźć przykład, jak załadować config. Widziałem coś o ładowaniu go:

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

ale rzuca „ValueError: słownik nie określa wersję”

Więc moje pytanie brzmi: w jaki sposób mogę załadować to do rejestratora w Pythonie i jak używać clogger i flogger.

Odpowiedz

16

Po przeczytaniu python documentation widzimy, że w konfiguracji jest wymagany klucz, który mówi: version.

Trzeba linię w konfiguracji, która mówi

version: 1 

Albo można zrobić:

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

Oh całkowicie przeoczyć. dziękuję nie działa jak wdzięk – Kempe

+5

co z '' 'z open (" logging.conf ") jako f:' '' ', więc plik zostanie zamknięty? – rbp