Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x - Fatal编程技术网

如何在python中设置日志记录级别?

如何在python中设置日志记录级别?,python,python-3.x,Python,Python 3.x,我有以下完整的python(3.8.5)代码示例 import logging L = logging.getLogger(__name__) def main(): L.setLevel(logging.DEBUG) L.warning("This is warn") L.info("This is info") L.debug("This is debug") if __name__ == &qu

我有以下完整的python(3.8.5)代码示例

import logging
L = logging.getLogger(__name__)

def main():
    L.setLevel(logging.DEBUG)
    L.warning("This is warn")
    L.info("This is info")
    L.debug("This is debug")

if __name__ == "__main__":
    main()
它应该打印出所有三个短语,但只打印第一个(用于警告)


如何避免此错误?

您应该将
L.setLevel
切换到
logging.basicConfig(level=…)

e、 g:

def main():
logging.basicConfig(级别=logging.DEBUG)
L.警告(“这是警告”)
L.info(“这是info”)
L.debug(“这是debug”)

您使用的方法专门设置此记录器的日志记录级别,这意味着特定记录器在较低级别上进行日志记录时实际上不会执行任何操作-它与流程和打印的日志记录级别无关。使用
logging.basicConfig
可以配置进程的日志级别,因此即使有多个记录器,该级别也将确定进程中会出现哪些日志消息。

您应该将
L.setLevel
切换到
logging.basicConfig(级别=…)

e、 g:

def main():
logging.basicConfig(级别=logging.DEBUG)
L.警告(“这是警告”)
L.info(“这是info”)
L.debug(“这是debug”)

您使用的方法专门设置此记录器的日志记录级别,这意味着特定记录器在较低级别上进行日志记录时实际上不会执行任何操作-它与流程和打印的日志记录级别无关。使用
logging.basicConfig
可以配置进程的日志级别,因此,即使有多个记录器,该级别也将确定进程中产生哪些日志消息。

使用
logging.basicConfig

import logging
logging.basicConfig(level=logging.DEBUG)
L = logging.getLogger(__name__)

def main():
    L.warning("This is warn")
    L.info("This is info")
    L.debug("This is debug")

if __name__ == "__main__":
    main()

使用
logging.basicConfig

import logging
logging.basicConfig(level=logging.DEBUG)
L = logging.getLogger(__name__)

def main():
    L.warning("This is warn")
    L.info("This is info")
    L.debug("This is debug")

if __name__ == "__main__":
    main()

你需要。那么这是错的吗?这回答了你的问题吗?根据前面提到的问题,您需要定义一个处理程序
BasicConfig
是一种快速实现这一点的方法。您提到的询问是否错误的问题包括您尚未完成的几个额外步骤,包括定义处理程序。您需要。那么是错误的吗?这是否回答了您的问题?根据前面提到的问题,您需要定义一个处理程序
BasicConfig
是一种快速实现这一点的方法。你提到的问题是问它是否错误,包括你没有做的几个额外步骤,包括定义一个处理程序。所以这是python中的一个错误?不,这是故意的,我无法解释他们为什么选择这条路径,但这就是它的工作原理。最佳实践是使用类似于
logging.basicConfig(level=os.environ[…])
的方法,并从一些环境变量中获取流程的日志级别,然后不需要使用方法
setLevel
。这是一个bug。你误解的接口与有bug的接口不同。然后我仍然误解了它,因为它是python中的bug?不,这是故意的,我无法解释他们为什么选择这条路径,但这就是它的工作原理。最佳实践是使用类似于
logging.basicConfig(level=os.environ[…])
的方法,并从一些环境变量中获取流程的日志级别,然后不需要使用方法
setLevel
。这是一个bug。你误解的接口与有bug的接口不一样。然后我仍然误解了它,所以这是python中的bug?那么这是python中的bug?