Python3日志记录-为每个日志级别(INFO和ERROR)创建日志文件

时间:2019-08-30 14:50:09

标签: python-3.x logging yaml

我正在尝试使用YAML配置文件在脚本中设置记录器。

目标之一是将所有“错误”级别的消息仅记录到errors.log并将所有“信息”级别的消息仅记录到info.log。

我的配置创建了两个日志文件-进入errors.log的“错误”和进入info.log的“ info”,但是错误消息也记录到info.log。

因此,信息日志将如下所示:

2019-08-30 10:31:09,667 | INFO | Function: main() | Line 26 | TEST-MESSAGE-1
2019-08-30 10:31:09,667 | ERROR | Function: main() | Line 27 | TEST-MESSAGE-2

是否可以将错误消息排除在info.logs之外?

如果是这样,我在日志记录配置中出了什么问题?

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

    info_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: INFO
        formatter: simple
        filename: ./_logs/info.log
        maxBytes: 10485760 # 10MB
        backupCount: 20
        encoding: utf8

    error_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: ERROR
        formatter: simple
        filename: ./_logs/errors.log
        maxBytes: 10485760 # 10MB
        backupCount: 20
        encoding: utf8

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

root:
    level: INFO
    handlers: [console, info_file_handler, error_file_handler]
    propogate: no
#! /usr/bin/env python3


import logging
import logging.config
import yaml

logger = logging.getLogger(__name__)


def set_logger():
    path = 'logging.yaml'
    with open(path, 'rt') as f:
        config = yaml.safe_load(f.read())
        logger = logging.config.dictConfig(config)
    return logger


def main():
    test_msg1 = f"TEST-MESSAGE-1"
    test_msg2 = f"TEST-MESSAGE-2"
    logger.info(test_msg1)
    logger.error(test_msg2)


if __name__ == '__main__':
    set_logger()
    main()

0 个答案:

没有答案