为什么INFO会登录DEBUG日志

时间:2017-11-21 04:41:05

标签: python logging yaml

我正在使用yaml为我的Python应用程序配置日志记录。

version: 1
disable_existing_loggers: False

formatters:
    standard:
        format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

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

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

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

    debug_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: DEBUG
        formatter: standard
        filename: debug.log
        maxBytes: 10485760 # 10MB
        backupCount: 20
        encoding: utf8

loggers:
        db_ops:
        level: DEBUG
        handlers: [info_file_handler, error_file_handler, debug_file_handler]
        propagate: true

在模块db_ops中,我同时使用logger.infologger.debug进行不同级别的日志记录。当我运行应用程序时,INFO确实输出到info.log,INFODEBUG消息都输出到debug.log。

根据级别将日志分隔到不同文件的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

python记录器和处理程序的级别是阈值。如果您将级别指定为DEBUG,则表示将记录等于或高于DEBUG 的任何内容。

如果您只想进行DEBUG日志记录,则必须另外分配一个过滤器,该过滤器将过滤除DEBUG消息之外的任何内容。