2012-05-09 50 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