【问题标题】:Python - No handlers could be found for logger "OpenGL.error"Python - 找不到记录器“OpenGL.error”的处理程序
【发布时间】:2010-09-25 15:36:02
【问题描述】:

好的,它是什么,为什么它出现在Win2003服务器上,而在WinXP上却没有。

它似乎根本不影响我的应用程序,但是当我关闭应用程序时收到此错误消息。这很烦人(错误消息应该是这样的)。

我正在使用 pyOpenGl 和 wxPython 来处理图形。不幸的是,我是一名 C# 程序员,已经接管了这个 Python 应用程序,我必须学习 Python 才能做到这一点。

我可以提供代码和版本号等,但我仍在学习技术知识,因此我们将不胜感激。

Python 2.5、wxPython 和 pyOpenGL

【问题讨论】:

  • 我认为“找不到处理程序”是一个规范问题,不仅发生在 Python 的 OpenGL 库中,而且发生在许多 Python 库中。现在虽然当我谷歌“python no handlers could be found for logger”时,我发现这个问题似乎是最接近规范问题/解决方案的问题。
  • 万一有人来这里找这个stackoverflow.com/q/44188270/1581226

标签: python logging opengl wxpython pyopengl


【解决方案1】:

看起来 OpenGL 正在尝试在 Win2003 上报告一些错误,但是您尚未配置系统输出日志信息的位置。

您可以将以下内容添加到程序的开头,您将在 stderr 中看到错误的详细信息。

import logging
logging.basicConfig()

查看logging 模块上的文档以获取更多配置信息,在概念上类似于 log4J。

【讨论】:

  • 这真的很有帮助。我能够从我的应用程序中获取错误文本,而不是追踪问题。
【解决方案2】:

要摆脱此消息的proper way 是为您的库 (OpenGL) 的根级别记录器配置 NullHandler。

【讨论】:

  • 我认为您被否决了,因为使用 NullHandler 忽略日志消息很少是正确的做法。报告的消息通常表明在应该已经配置记录器的时候没有配置记录器,并且您也忽略了尝试记录某些内容的组件的潜在问题。在某些情况下,使用 NullHandler 可能是正确的做法,但 IMO 很少这样做。
  • @MoisesSilva 对于库 NullHandler 是必须的。它不会关闭日志记录 - 它只是允许对其进行细粒度控制 Think reset.css
  • 你是对的。然而,在这个问题的上下文中,操作员有他自己的使用 OpenGL 的应用程序,因此最好将记录器配置为打印 OpenGL 试图报告的错误。这导致他解决了问题的根本原因。
  • 该链接提供了一些有趣的阅读材料(博客文章以及相关的官方 Python 错误报告),展示了人们在使用 Python logging 模块时遇到的常见问题。
【解决方案3】:

添加上面的 Logging 后,我可以看到问题是由于缺少 TConstants 类引起的,我在 py2exe setup.py 文件中排除了该类。

从排除列表中删除“Tconstants”后,我不再遇到问题。

【讨论】:

    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 2012-11-11
    • 2011-09-03
    • 2015-04-27
    • 2015-02-09
    • 2016-01-05
    相关资源
    最近更新 更多