我的代码是这样的
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())
})