Python 错误消息";找不到记录器ZODB.FileStorage的处理程序;关于复制的ZODB数据库

Python 错误消息";找不到记录器ZODB.FileStorage的处理程序;关于复制的ZODB数据库,python,logging,Python,Logging,我使用ZODB创建了一个数据库,然后将其复制粘贴到另一台电脑上。我想知道为什么每次登录此数据库(复制的数据库)时都会出现以下错误: no handlers could be found for logger (ZODB.FileStorage) 注意:程序没有中断,它只是将语句打印成红色,就好像它是一个错误一样 这条恼人的消息是什么?为什么每次我登录时都会出现 更新编号(1):什么是python日志记录系统?为什么我需要在我的应用程序中配置它 注: 我只使用ZODB 我的操作系统是Window

我使用
ZODB
创建了一个数据库,然后将其复制粘贴到另一台电脑上。我想知道为什么每次登录此数据库(复制的数据库)时都会出现以下错误:

no handlers could be found for logger (ZODB.FileStorage)
注意:程序没有中断,它只是将语句打印成红色,就好像它是一个错误一样

这条恼人的消息是什么?为什么每次我登录时都会出现

更新编号(1):什么是python日志记录系统?为什么我需要在我的应用程序中配置它

注:

  • 我只使用ZODB

  • 我的操作系统是WindowsXPSP2


  • 简短回答

    您不需要为应用程序配置它。这样做很有用

    长答案

    该模块是一个python模块,它允许任何python代码以与使用它的实际应用程序的输出无关的方式记录信息。任何深度的库都可以导入日志模块、日志信息、警告、错误等,而不必确切知道用户将如何接收它们

    您看到的是您自己的应用程序中缺少处理程序。ZODB显然是在记录信息,但由于您还没有定义处理程序,这些记录信息只是蒸发到乙醚中。它通知您,如果您想查看一些日志信息,您应该定义一个处理程序

    从:

    此示例使用应用程序的名称创建记录器。然后创建两种类型的处理程序。一个是将调试级日志写入文件的文件处理程序。第二个是流处理程序,它将向控制台发送错误

    如果希望看到更多详细信息进入控制台,可以将日志级别更改为INFO:

    ch = logging.StreamHandler()
    ch.setLevel(logging.INFO)
    
    还要注意“格式化程序”的概念。您可以为不同的处理程序设置不同的日志格式

    如果您至少在应用程序中创建了一个流处理程序,那么它将不再警告您尚未定义处理程序

    对于Python2.7+,
    日志记录
    模块包括一个
    空处理程序
    。当最终用户在没有任何日志处理程序的情况下使用库时(正如您所做的那样),它将在库(如数据库库)中用作默认处理程序,以消除错误。因此,如果您根本不关心日志记录,只想让它静音,那么您可以在自己的代码中添加
    NullHandler
    。建议实际设置日志记录,但这只是另一个选项:


    可能的重复不是ZODB的问题;您尚未在应用程序中配置python日志记录系统。我请求删除该问题。我将更新此帖子的相关问题。感谢jdiYa,我刚刚注意到它已被删除。FWIW,从collective.recipe.backup运行bin/snapshotbackup时,我也遇到此错误
    ch = logging.StreamHandler()
    ch.setLevel(logging.INFO)
    
    import logging
    logging.getLogger('spam_application').addHandler(logging.NullHandler())