简短回答
你不需要为你的应用程序配置它,但这样做是有用的。
详细回答
logging 模块是一个 Python 模块,允许任何 Python 代码以一种输出无关的方式记录信息。任何深度的库都可以导入 logging 模块,记录信息、警告、错误等,而不必知道用户将如何接收它们。
你所看到的是关于自己应用程序中没有处理程序的缺失。显然,ZODB 正在记录信息,但由于你没有定义处理程序,这些日志信息就只能消失了。它提示你,如果想要查看一些日志信息,应该定义一个处理程序。
来自 Logging Cookbook:
import logging
logger = logging.getLogger('spam_application')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
这个示例创建了一个带名称的记录器,以便与您的应用程序相关。然后它创建了两种类型的处理器。其中之一是文件处理器,将DEBUG级别的日志写入文件中。第二个是流处理器,它会将错误发送到您的控制台。
如果您想在控制台中看到更多详细信息,可以将日志级别更改为INFO:
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
请注意 "格式化程序" 的概念。您可以为不同的处理程序设置不同的日志格式。
如果您至少在应用程序中创建一个流处理程序,则不再会警告您未定义处理程序。
对于Python 2.7+,logging
模块包含一个 NullHandler
。它旨在用于库(例如您的数据库库),作为默认处理程序,在最终用户在没有任何日志处理程序的情况下使用库时静音错误(就像您所做的那样)。因此,如果您根本不关心日志记录,只想消除日志记录,您可以在自己的代码中添加一个 NullHandler
。建议实际设置日志记录,但这只是另一种选择:
向记录器添加 NullHandler
import logging
logging.getLogger('spam_application').addHandler(logging.NullHandler())