为什么我的 Python 日志记录设置不起作用?

时间:2021-07-23 16:29:07

标签: python logging

我的代码是这样的

import logging

formatter = logging.Formatter("{asctime} - {name} - {levelname} - {message}",
                              "%d-%b-%y %H:%M", "{")


def _add_handler(handler: logging.StreamHandler) -> logging.StreamHandler:
    handler.setFormatter(formatter)
    handler.setLevel(20)
    return handler

logging.basicConfig(
    handlers={
        _add_handler(logging.FileHandler("filename.log")),
        _add_handler(logging.StreamHandler())
    })
logging.info("hello world")

这是应该做的是将 "hello world" 记录到控制台和名为 filename.log 的文件中,严重性为 INFO,这就是20 方法中的 setLevel 用于。但是,根本没有记录任何内容。我哪里出错了?

1 个答案:

答案 0 :(得分:1)

您还需要为记录器设置日志记录级别。默认情况下,它设置为 logging.WARNING,因此两个处理程序都看不到消息,更不用说确定是否应该处理它。

logging.basicConfig(
    level=logging.INFO,
    handlers={
        _add_handler(logging.FileHandler("filename.log")),
        _add_handler(logging.StreamHandler())
    })