讓我們來看看解決這個問題的源代碼。它的作用是暗示添加處理程序,以根:
_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版本:方便。 –