2016-05-13 52 views
4

我用Python构建了一个带有QtDesigner的小GUI应用程序,并将该应用程序传递给了我的团队中使用Autodesk 360 + Autocad的几个人。编译或运行PyQT4 GUI应用程序时排除(或禁用)log4cplus警告?

我的应用程序使用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忽略某些东西......我不知道在哪里搜索。谢谢 !

+0

您是否将控制台用于任何其他输入或输出? –

+0

是的控制台用于在这个过程中得到一些QA,并显示一些信息日志 – kaycee

+1

你可以在应用程序的stdout/stderr上放置一个处理程序,让除了某些消息之外的所有内容都通过。我不知道基于你的应用程序的其余部分是如何设置的。 –

回答

5

免责声明:不是一个完整的答案,而是一个扩展的问题。

问题是,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您的应用程序重定向到herehere描述为无处,但这可能不适合您的程序,因为它使用控制台输出。

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