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



我的代码是这样的

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,这就是setLevel方法中的20的作用。但是,根本没有记录任何内容。我哪里做错了?

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

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