Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在没有实例的情况下访问日志模块?_Python - Fatal编程技术网

Python 为什么在没有实例的情况下访问日志模块?

Python 为什么在没有实例的情况下访问日志模块?,python,Python,我正在学习Python中的日志记录,但我不明白为什么日志记录可以这样初始化: logging.basicConfig(level=logging.INFO) 它不需要像这样的东西吗 l_instance = logging.basicConfig(level=logging.INFO) 与CSV的工作方式类似: c_instance = csv.reader() 让我们看一下回答这个问题的源代码。它的作用是向根目录添加处理程序: _acquireLock() try: if len

我正在学习Python中的日志记录,但我不明白为什么日志记录可以这样初始化:

logging.basicConfig(level=logging.INFO)
它不需要像这样的东西吗

l_instance = logging.basicConfig(level=logging.INFO)
与CSV的工作方式类似:

c_instance = csv.reader()

让我们看一下回答这个问题的源代码。它的作用是向根目录添加处理程序:

_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)
看到了吗?它在根目录下运行。Pyton是开源的,您可以利用它;)

此外,请阅读本文以了解基本原理。Tl;dr版本:方便。