python logging 优先级

logging 内定义的优先级为 CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET

简单来说,根 logger 的优先级为“保底”

对于任何 handler ,如果其优先级高于根 logger,则按照 handler 的优先级显示日志

如果其优先级低于根 logger,则按照根 logger 的优先级显示日志

有如下代码:

import logging

format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("test logger") # 根 logger

fhandler = logging.FileHandler("log.txt")
fhandler.setLevel(logging.DEBUG)
fhandler.setFormatter(format)

shandler = logging.StreamHandler()
shandler.setLevel(logging.WARNING)
shandler.setFormatter(format)

logger.propagate = False

logger.addHandler(fhandler)
logger.addHandler(shandler)

logger.debug("debug")
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critical")


其运行结果为

文件日志的 handler 日志级别为 DEBUG,比根 logger 的级别 INFO 低,文件日志输出到 INFO 级别,没有输出到 DEBUG 级别

控制台日志的 handler 日志级别为 WARNING,比根 logger 的级别 INFO 高,控制台日志输出到 WARNING 级别,没有输出到 INFO 级别

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据