2012-05-09 6 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でロガーにこれをロードしない方法と、どのようにして詰り止めと鞭打ちを使用するのですか?

答えて

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

'' ''( 'logging.conf ')をf:' '' 'としてオープンにするとファイルは閉じられますか? – rbp

関連する問題