简答
您无需为您的应用程序配置它。这样做很有用。
长答案
logging模块是一个 python 模块,它允许任何 python 代码以与使用它的实际应用程序输出无关的方式记录信息。任何深度的库都可以导入日志模块、日志信息、警告、错误等,而不必确切知道用户将如何接收它们。
您所看到的是您自己的应用程序中缺少处理程序。ZODB 显然是记录信息,但由于您没有定义处理程序,因此这些记录信息只是蒸发到以太中。它通知您,如果您想查看一些日志记录信息,您应该定义一个处理程序
从记录食谱:
import logging
# create logger with 'spam_application'
logger = logging.getLogger('spam_application')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
此示例为您的应用创建一个带有名称的记录器。然后它创建两种类型的处理程序。一个是文件处理程序,用于将 DEBUG 级别的日志写入文件。第二个是流处理程序,它将向您的控制台发送错误。
如果您想在控制台中看到更详细的信息,可以将日志级别更改为 INFO:
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
还要注意“格式化程序”的概念。您可以为不同的处理程序设置不同的日志格式。
如果您至少在您的应用程序中创建了一个流处理程序,那么它将不再警告您尚未定义处理程序。
对于 python 2.7+,该logging
模块包括一个NullHandler
. 它旨在在库(例如您的数据库库)中用作默认处理程序,当最终用户在没有任何日志记录处理程序的情况下使用库时(如您所做的那样),它可以消除错误。因此,如果您根本不关心日志记录,只是想使其静音,您可以NullHandler
在自己的代码中添加 a。建议实际设置日志记录,但这只是另一种选择:
将 NullHandler 添加到记录器
import logging
logging.getLogger('spam_application').addHandler(logging.NullHandler())