在编译或 运行 PyQT4 GUI 应用程序时排除(或禁用)log4cplus 警告?
Exclude (or disable) log4cplus warnings when compiling or running a PyQT4 GUI app?
我在 Python 中使用 QtDesigner 构建了一个小的 GUI 应用程序,并将该应用程序传递给了我团队中使用 Autodesk 360 + Autocad 的几个人。
我的应用程序使用 QFileDialog
命令获取文件名,已知在计算机上安装 Autodesk 360 时存在错误:link 1, link2 .
错误:调用文件对话框时,控制台总是returns以下错误:
log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
log4cplus:ERROR Please initialize the log4cplus system properly.
这个错误并不严重,因为它不会改变处理过程,但我不希望任何错误消息像那样弹出。
考虑到我们经常将应用程序分发给每天使用 Autodesk 产品的人,并且该错误看起来不会很快得到纠正,是否可以忽略此错误,以便它不会在控制台中显示? 也许是在构建过程中使用 py2exe
忽略了某些内容...我不知道在哪里搜索。谢谢!
免责声明:不是完整的答案,而是对问题的扩展跟踪。
问题是 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
执行所有 "valid" 控制台输出,那么您可以尝试简单地关闭 STDERR
或将其重定向到 nul
如上面提供的链接中所述。
我在 Python 中使用 QtDesigner 构建了一个小的 GUI 应用程序,并将该应用程序传递给了我团队中使用 Autodesk 360 + Autocad 的几个人。
我的应用程序使用 QFileDialog
命令获取文件名,已知在计算机上安装 Autodesk 360 时存在错误:link 1, link2 .
错误:调用文件对话框时,控制台总是returns以下错误:
log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
log4cplus:ERROR Please initialize the log4cplus system properly.
这个错误并不严重,因为它不会改变处理过程,但我不希望任何错误消息像那样弹出。
考虑到我们经常将应用程序分发给每天使用 Autodesk 产品的人,并且该错误看起来不会很快得到纠正,是否可以忽略此错误,以便它不会在控制台中显示? 也许是在构建过程中使用 py2exe
忽略了某些内容...我不知道在哪里搜索。谢谢!
免责声明:不是完整的答案,而是对问题的扩展跟踪。
问题是 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
执行所有 "valid" 控制台输出,那么您可以尝试简单地关闭 STDERR
或将其重定向到 nul
如上面提供的链接中所述。