我在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
构建过程中忽略某些内容...我不知道在哪里搜索。谢谢!
答案 0 :(得分: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
重定向到here所述的任何地方
或here但这可能不适合您的程序,因为它使用控制台输出。
更新:您可以尝试在应用中甚至全局设置环境变量LOG4CPLUS_LOGLOG_QUIETMODE
= false
,并检查它是否有帮助。此外,如果您不需要STDERR
并通过STDOUT
执行所有“有效”控制台输出,那么您可以尝试关闭STDERR
或将其重定向到nul
,如上所述在上面提供的链接中。