4

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

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

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

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

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

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

4

1 回答 1

5

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

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

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

默认情况下,log4cplus 需要一个 java 样式的属性文件来加载配置,所以我想,AdSyncNamespace.dll 可能有这样的配置,要么在文件中,要么存储在 Windows 注册表项中。您可以在 Autodesk 安装文件夹中搜索包含字符串的文件,并使用查看 Windows 中的应用程序正在访问哪些文件/注册表项来log4cplus.跟踪访问了哪些注册表项

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

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

于 2016-05-13T20:05:30.983 回答