在编译或运行 PyQT4 GUI 应用程序时排除(或禁用)log4cplus 警告?
Posted
技术标签:
【中文标题】在编译或运行 PyQT4 GUI 应用程序时排除(或禁用)log4cplus 警告?【英文标题】:Exclude (or disable) log4cplus warnings when compiling or running a PyQT4 GUI app? 【发布时间】:2016-09-10 02:19:03 【问题描述】:我使用 Python 中的 QtDesigner 构建了一个小型 GUI 应用程序,并将该应用程序传递给我团队中使用 Autodesk 360 + Autocad 的几个人。
我的应用程序使用QFileDialog
命令获取文件名,已知在机器上安装 Autodesk 360 时存在错误:link 1、link2。
错误:调用文件对话框时控制台总是返回以下错误:
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脚本)吗?你有我如何过滤这个错误的代码示例吗? forums.autodesk.com/t5/installation-hardware-os/log4cplus-error/… 【参考方案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
,如上面提供的链接中所述。
【讨论】:
以上是关于在编译或运行 PyQT4 GUI 应用程序时排除(或禁用)log4cplus 警告?的主要内容,如果未能解决你的问题,请参考以下文章
使用 PyQt4 或 PySide 捕获屏幕,除了特定的小部件?
使用 Anaconda Python 的 PyQt Windows 安装程序 - 未找到 PyQt4;如何进行故障排除?