【问题标题】:Exclude (or disable) log4cplus warnings when compiling or running a PyQT4 GUI app?在编译或运行 PyQT4 GUI 应用程序时排除(或禁用)log4cplus 警告?
【发布时间】:2016-09-10 02:19:03
【问题描述】:

我使用 Python 中的 QtDesigner 构建了一个小型 GUI 应用程序,并将该应用程序传递给我团队中使用 Autodesk 360 + Autocad 的几个人。

我的应用程序使用QFileDialog 命令获取文件名,已知在机器上安装 Autodesk 360 时存在错误:link 1link2

错误:调用文件对话框时控制台总是返回以下错误:

log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
log4cplus:ERROR Please initialize the log4cplus system properly.

这个错误并不严重,因为它不会改变处理,但我不希望任何错误消息像那样弹出。

考虑到我们经常将应用程序分发给每天使用 Autodesk 产品的人,并且该错误看起来不会很快得到纠正,是否可以忽略此错误,使其不会显示在控制台中? 也许是在构建过程中忽略了py2exe...我不知道在哪里搜索。谢谢!

【问题讨论】:

  • 您是否使用控制台进行任何其他输入或输出?
  • 是的,控制台用于在此过程中从用户那里获取一些 QA 并显示一些信息日志
  • 您可以在应用程序的 stdout/stderr 上放置一个处理程序,让除某些消息之外的所有内容都通过。我不知道您的应用程序的其余部分是如何设置的。
  • 我应该把这个处理程序放在应用程序的主入口点(即由py2exe编译的main.py脚本)吗?你有我如何过滤这个错误的代码示例吗?

标签: python c++ py2exe autodesk log4cplus


【解决方案1】:

免责声明:不是完整的答案,而是对问题的扩展跟踪。

问题在于,Autodesk 360 的至少一个组件(可能是 AdSyncNamespace.dll)使用了log4cplus 库,但没有为其提供正确的配置。

根据log4cplus:ERROR in python when calling for tkinter file dialog甚至@wilx的说法,log4cplus的作者早在2013年就不知道如何正确解决问题。

默认情况下,log4cplus 需要一个 java 风格的属性文件来加载配置,所以我想,AdSyncNamespace.dll可能有这样的配置,要么在文件中,要么存储在 Windows 注册表项中.您可以在 Autodesk 安装文件夹中搜索包含 log4cplus. 字符串的文件,并使用 See what files/registry keys are being accessed by application in Windows 跟踪访问了哪些注册表项

当然,这一切可能看起来很无聊,您可能更喜欢更简单的解决方案。一个更简单的解决方案是将您的应用程序的STDERR 重定向到任何地方,如here 所述 或here,但这可能不适合您的程序,因为它使用控制台进行输出。

更新:您可以尝试在您的应用程序甚至全局设置环境变量LOG4CPLUS_LOGLOG_QUIETMODE=false,并检查它是否有帮助。此外,如果您不需要STDERR 并通过STDOUT 执行所有“有效”控制台输出,那么您可以尝试简单地关闭STDERR 或将其重定向到nul,如上面提供的链接中所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2019-06-27
    • 1970-01-01
    相关资源
    最近更新 更多