Python 记录器对象未继承根级别

Python 记录器对象未继承根级别,python,logging,Python,Logging,在试用python的日志模块时,我遇到了一些意想不到的行为。我的猜测是,这是由于我的误解,而不是一个bug,但我不知道出了什么问题(在测试之前,我一直小心地重新启动python内核,以确保根记录器只配置一次) import logging logging.basicConfig(level=logging.CRITICAL) logger1 = logging.getLogger(__name__) logger1.debug("logger1 debug test") 正

在试用python的日志模块时,我遇到了一些意想不到的行为。我的猜测是,这是由于我的误解,而不是一个bug,但我不知道出了什么问题(在测试之前,我一直小心地重新启动python内核,以确保根记录器只配置一次)

import logging
logging.basicConfig(level=logging.CRITICAL)
logger1 = logging.getLogger(__name__)
logger1.debug("logger1 debug test")
正如预期的那样,日志消息没有输出

如果我随后更改记录器的级别,如下所示:

logger1.setLevel('DEBUG')
logger1.debug("logger1 debug test")
我得到了预期的输出:

DEBUG:__main__:logger1 debug test
但是,当我现在创建一个新的logger对象时,它似乎继承了logger1的属性,而不是根的属性:

logger2 = logging.getLogger(__name__)
logger2.debug("logger2 debug test")
产生:

DEBUG:__main__:logger2 debug test
奇怪的是,logger2仍然将根显示为父级,但显示的级别为10:

print(logger2.__dict__)

{'filters': [], 'name': '__main__', 'level': 10, 'parent': <RootLogger root (CRITICAL)>, 'propagate': True, 'handlers': [], 'disabled': False, '_cache': {10: True}, 'manager': <logging.Manager object at 0x00000265147F2B48>}
print(日志2.\uuuu dict\uuuu)
{'filters':[],'name':'uuu main','level':10,'parent':,'propagate':True,'handlers':[],'disabled':False,'u cache':{10:True},'manager':}

谁能解释一下为什么logger2没有默认为0级(未设置)?

感谢@Abhinav Mathur在评论中给出的答案


问题是,通过尝试创建与logger1同名的logger2,我实际上没有创建新的logger对象。

检查@AbhinavMathur如果我理解这个问题(以及答案),问题是用户不知道所有logger对象的默认(有效)级别是根级别(即父级)。我的问题正好相反-我在问为什么logger2的默认(有效)级别与rootTry
logger2=logging.getLogger()
当然,我原来的logger2对象与logger1对象是同一个对象,因为我选择了相同的名称!谢谢,我希望它是简单的。