这是一个我觉得这个logging
模块很奇怪的小例子:
import logging
logging.basicConfig()
#
# making a hierarchy like this:
# root
# |- session
# |-session.foo
#
root_logger = logging.getLogger()
session_logger = logging.getLogger("session")
foo_logger = logging.getLogger("session.foo")
#
# root_logger and session_logger effective log levels
# are set to 30 (= WARNING)
#
foo_logger.debug("WA") #nothing is printed, so far so good
#
# and now enters the problem...
#
foo_logger.setLevel(logging.DEBUG)
foo_logger.debug("HELLO") #HELLO log message is printed!!!
我不明白为什么要打印'HELLO'日志消息,据我了解,因为没有附加到记录器foo_logger
的处理程序,日志消息应该冒泡,并被更高级别的记录器(session
)有效地停止,因为它的级别设置为WARNING
(默认)。
似乎将级别设置为foo_logger
赋予它通过处理程序显示的权利,但我不清楚。
有人可以向我解释为什么要打印该消息吗?我应该怎么做才能拥有我想要的记录器层次结构?