2012-05-09 4 views
16

Я пытаюсь настроить регистратор из файла yaml. На docs.python.org я нашел пример того, как создать файл YAML, а файл я создал выглядит следующим образом:python2.7: настройка регистрации с 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] 

Но я не могу найти пример того, как загрузить конфиг. Я видел кое-что о загрузке его:

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

но бросает «ValueError: словарь не указана версия»

Так что мой вопрос: как я могу загрузить это к регистратору в Python и как я использую clogger и flogger.

ответ

16

Считая python documentation, мы видим, что в конфигурации есть необходимый ключ, который говорит version.

Вам нужна строка в конфигурации, которая говорит

version: 1 

Или, вы можете сделать:

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

О я полностью пропустил это. спасибо нет, он работает как шарм – Kempe

+5

как насчет '' '' с open ('logging.conf') как f: '' '', поэтому файл закрывается? – rbp

Смежные вопросы