python2.7:使用yaml记录配置

时间:2012-05-09 15:38:11

标签: python python-2.7

我正在尝试从yaml文件配置记录器。在docs.python.org上,我找到了一个如何创建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。

1 个答案:

答案 0 :(得分:17)

通过阅读python documentation,我们发现配置中有一个必需的密钥,表示version

您的配置中需要一行

version: 1

或者,您可以这样做:

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