为什么没有实例访问日志模块?

时间:2017-04-26 05:54:40

标签: python

我正在学习使用Python登录,但我不明白为什么可以像这样初始化日志:

logging.basicConfig(level=logging.INFO)

不需要像:

l_instance = logging.basicConfig(level=logging.INFO)

类似于CSV的用途:

c_instance = csv.reader()

1 个答案:

答案 0 :(得分:1)

让我们来看看这个问题的源代码。它的作用是暗示向root添加处理程序:

_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

你可以看到它返回了这个创建的根。同样的事情适用于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是开源的,你可以利用它;)