Python:使用yaml配置logger以在写入模式下打开日志文件

时间:2018-04-10 11:59:35

标签: python logging yaml

我在loggingConfig.yml文件中有以下logger配置

version: 1
disable_existing_loggers: False
    formatters:
        simple:
            format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

handlers:
    console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: simple
    stream: ext://sys.stdout

file_handler:
    class: logging.FileHandler
    level: INFO
    formatter: simple
    filename: info.log
    encoding: utf8

loggers:
    my_module:
        level: ERROR
        handlers: [console]
        propagate: no

root:
     level: INFO
     handlers: [console, file_handler]

以下python代码:

import logging
import logging.config
import yaml

with open('loggingConfig.yml', 'rt') as f:
    config = yaml.safe_load(f.read())
    logging.config.dictConfig(config)

logger = logging.getLogger(__name__)

logger.info('TestLogger')

这很好用,但现在我想在写模式下打开日志文件,而不是在追加模式下。 我无法找到任何使用yaml文件的示例,并以写入模式打开日志文件。

我发现,在写入模式下打开可以使用fileConfig

完成
logging.config.fileConfig('logging.conf')

并在logging.conf文件中指定args:

args=('info.log', 'w')

有什么办法可以使用yaml文件或在源代码中操作配置来实现这个目的吗?

1 个答案:

答案 0 :(得分:3)

尝试使用以下配置:

file_handler:
    class: logging.FileHandler
    level: INFO
    formatter: simple
    filename: info.log
    encoding: utf8
    mode: w

默认模式为'a',表示追加。关于here

的更多信息