2016-05-13 1 views
4

私はPythonでQtDesignerを使って少しのGUIアプリケーションを構築しました。私はAutodesk 360 + Autocadを使用している私のチームの少数の人達にそのアプリケーションを渡しました。 link 1link2PyQT4 GUIアプリケーションをコンパイルまたは実行するときにlog4cplusの警告を除外(または無効化)しますか?

私のアプリは、Autodesk 360がマシンにインストールされたときにバグがあることが知られているファイル名を取得するためにQFileDialogコマンドを使用します。

バグ:ファイルダイアログが呼び出されたときに、コンソールには、必ず次のエラーを返します。

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のコンポーネントの1つ(おそらくAdSyncNamespace.dll)がlog4cplusライブラリを使用していますが、正しい構成を提供していないことです。

log4cplus:ERROR in python when calling for tkinter file dialogによると、log4cplusの作者は2013年に問題を正しく修正する方法を知らなかった。デフォルトでは

は、log4cplusからコンフィギュレーションをロードするためのJavaスタイルのプロパティファイルが必要ですので、私が思う、AdSyncNamespace.dllは、いずれかのファイルでは、このような構成を持っている、またはWindowsレジストリキーに保存されていることがあります。 Autodeskインストールフォルダ内のlog4cplus.文字列を含むファイルを検索し、どのレジストリキーがアクセスされたかを追跡することができますSee what files/registry keys are being accessed by application in Windows

確かに、このすべては非常に退屈なようであり、アプリケーションのSTDERRhere またはhereのようにどこにもリダイレクトするのは簡単な解決方法ですが、出力用にコンソールを使用しているため、これはあなたのプログラムには適していない可能性があります。

更新:あなたのアプリで、あるいはグローバル= false環境変数LOG4CPLUS_LOGLOG_QUIETMODEを設定し、それが助けかどうかを確認しようとするかもしれません。 STDERRが不要で、すべての「有効な」コンソール出力をSTDOUTで実行する場合は、を閉じるか、上記のリンクに記載されているようにnulにリダイレクトしてみてください。

関連する問題