kay*_*cee 4 c++ python py2exe autodesk log4cplus
我在Python中使用QtDesigner构建了一个小GUI应用程序,我将应用程序传递给团队中使用Autodesk 360 + Autocad的几个人.
我的应用程序使用QFileDialog命令来获取文件名,这是众所周知的是一个bug时,安装在计算机上的Autodesk 360:链接1,链接2.
错误:调用文件对话框时,控制台始终返回以下错误:
log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
log4cplus:ERROR Please initialize the log4cplus system properly.
Run Code Online (Sandbox Code Playgroud)
错误并不重要,因为它不会更改处理,但我不希望任何错误消息像这样弹出.
考虑到我们经常会将应用程序分发给每天使用Autodesk产品的人,并且该bug看起来不会很快得到纠正,是否可以忽略此错误,以便它不会显示在控制台中?也许在构建过程中忽略了一些东西py2exe......我不知道在哪里搜索.谢谢 !
免责声明:不是一个完整的答案,而是一个问题的扩展轨道.
问题是Autodesk 360的至少一个组件(可能是AdSyncNamespace.dll)使用log4cplus库,但没有为它提供正确的配置.
据log4cplus:呼吁Tkinter的文件对话框时在python错误甚至@wilx,log4cplus笔者不知道早在2013年,如何正确地解决这个问题.
默认情况下,log4cplus需要一个java样式属性文件来加载配置,所以我想,AdSyncNamespace.dll 可能有这样的配置,无论是在文件中,还是存储在Windows注册表项中.您可以log4cplus.在Autodesk安装文件夹中搜索包含字符串的文件,并使用Windows中的应用程序查看访问哪些文件/注册表项来跟踪访问的注册表项
当然,这一切看起来都很无聊,你可能更喜欢更简单的解决方案.一个更简单的解决方案是将STDERR您的应用程序重定向到此处
或此处所述的任何地方,但这可能不适合您的程序,因为它使用控制台进行输出.
更新:您可以尝试在应用程序中甚至全局设置环境变量LOG4CPLUS_LOGLOG_QUIETMODE= false,并检查它是否有帮助.此外,如果您不需要STDERR并执行所有"有效"控制台输出STDOUT,那么您可以尝试简单地关闭STDERR或重定向它,nul如上面提供的链接中所述.