简单调试级Python日志记录失败?

简单调试级Python日志记录失败?,python,logging,Python,Logging,下面是我在Python 3.3.2下运行的一些代码: import logging logger = logging.getLogger("test.logger") logging.getLogger().setLevel(logging.DEBUG) # Shouldn't be needed logger.setLevel(logging.DEBUG) print("Effective logging level is {}".format(logger.getEffectiveLe

下面是我在Python 3.3.2下运行的一些代码:

import logging

logger = logging.getLogger("test.logger")

logging.getLogger().setLevel(logging.DEBUG) # Shouldn't be needed
logger.setLevel(logging.DEBUG)

print("Effective logging level is {}".format(logger.getEffectiveLevel()))
logger.debug("This is a debug-level message.")
以下是输出:

Effective logging level is 10
因此,尽管记录器的级别看起来是正确的,但调试消息没有被写入。我在Python文档或这个站点上没有看到任何表明我遗漏了任何内容的内容。这是怎么回事?谢谢

编辑:如果我通过添加此行来练习根记录器

logging.debug("Try this")
。。。然后两条信息都出来了。请注意使用日志记录而不是记录器。Curiouser和Curiouser。

调试消息正在编写中,您只是从未通过或通过实例添加实际的日志输出方法

因此,任何地方都不会显示日志消息,因为您没有告诉记录器在何处显示它们。

调试消息正在写入,您只是从未通过或通过实例添加实际的日志输出方法


因此,任何地方都不会显示日志消息,因为您没有告诉记录器在何处显示它们。

Amber的回答是正确的。我可以告诉您为什么看到警告或更高级别的消息,而不是信息或调试

从第3.2节开始:

logging.lastResort-可通过 这个属性。这是一个写入sys.stderr的StreamHandler 具有警告级别,并用于在 没有任何日志记录配置。最终的结果就是打印 将消息发送到sys.stderr。这将替换先前的错误消息 表示“找不到记录器XYZ的处理程序”。如果你需要 由于某种原因,lastResort的早期行为可以设置为 没有

请注意上面粗体部分-这就是为什么您没有看到警告下面的消息的原因。加一行就行了

logger.addHandler(logging.StreamHandler())
在logger.debug之前。。。行,您将看到出现调试消息


当您调用logging.debug…,如果在下面的注释中没有相应的处理程序,这会将StreamHandler添加到根记录器,这就是为什么会出现这两条消息。

Amber的回答是正确的。我可以告诉您为什么看到警告或更高级别的消息,而不是信息或调试

从第3.2节开始:

logging.lastResort-可通过 这个属性。这是一个写入sys.stderr的StreamHandler 具有警告级别,并用于在 没有任何日志记录配置。最终的结果就是打印 将消息发送到sys.stderr。这将替换先前的错误消息 表示“找不到记录器XYZ的处理程序”。如果你需要 由于某种原因,lastResort的早期行为可以设置为 没有

请注意上面粗体部分-这就是为什么您没有看到警告下面的消息的原因。加一行就行了

logger.addHandler(logging.StreamHandler())
在logger.debug之前。。。行,您将看到出现调试消息


当您调用logging.debug…,如果下面的注释中没有相应的处理程序,则会向根记录器添加StreamHandler,这就是为什么会出现这两条消息的原因。

如果您正在测试Google App Engine的应用程序,然后,通过在dev_appserver.py参数中添加-log_level=debug来解决此问题。如果您碰巧正在为Google App Engine测试应用程序,则通过在dev_appserver.py参数中添加-log_level=debug来解决此问题。如果我使用logger.warning或.error或.critical,我会看到消息。仅抑制信息和调试级别消息。就好像原来的30 logging.WARNING级别仍然在使用。我和Tony遇到了同样的问题。我在两台不同的计算机上有相同的代码。一个输出调试,一个不输出。一个Python 2.7.12失败,另一个Python 2.7.13工作。Python 2.7.12是否存在日志记录问题?如果使用logger.warning或.error或.critical,我会看到消息。仅抑制信息和调试级别消息。就好像原来的30 logging.WARNING级别仍然在使用。我和Tony遇到了同样的问题。我在两台不同的计算机上有相同的代码。一个输出调试,一个不输出。一个Python 2.7.12失败,另一个Python 2.7.13工作。Python 2.7.12是否存在日志记录问题?感谢您的说明。感谢您的说明。