让我们来看看解决这个问题的源代码。它的作用是暗示添加处理程序,以根:
_acquireLock()
try:
if len(root.handlers) == 0:
filename = kwargs.get("filename")
if filename:
mode = kwargs.get("filemode", 'a')
hdlr = FileHandler(filename, mode)
else:
stream = kwargs.get("stream")
hdlr = StreamHandler(stream)
fs = kwargs.get("format", BASIC_FORMAT)
dfs = kwargs.get("datefmt", None)
fmt = Formatter(fs, dfs)
hdlr.setFormatter(fmt)
root.addHandler(hdlr)
level = kwargs.get("level")
if level is not None:
root.setLevel(level)
finally:
_releaseLock()
所以一个原因是,该方法返回None
:d
现在,看看,如果你调用getLogger
方法:
if name:
return Logger.manager.getLogger(name)
else:
return root
你cann看到它返回这个创建的根。同样的道理也适用于其他方法debug
:
def debug(msg, *args, **kwargs):
"""
Log a message with severity 'DEBUG' on the root logger.
"""
if len(root.handlers) == 0:
basicConfig()
root.debug(msg, *args, **kwargs)
看到了吗?它在root
上运行。 Pyton是开源的,你可以使用它;)
[“Logger有以下属性和方法。注意,Logger不会直接实例化,但总是通过模块级函数'logging.getLogger(name) '“](https://docs.python.org/2/library/logging.html) –
另外,请阅读[PEP](https://www.python.org/dev/peps/pep-0282/)为理由。 Tl; dr版本:方便。 –