私はGUIpythonプログラムと簡単なエラーロギングシステムを持っています
import sys
sys.stderr = open("err.log", "w")
そしてそれはほとんどうまくいきます。私が抱えている問題の1つは、Windows7とPython2.7.3を使用して実行時エラーが発生すると、プログラムを閉じた後にのみファイルerr.logが書き込まれることです。私が収集した関連する問題を読んで、エラーの後にsys.stderrに対してflush()とos.fsync()を実行する必要がありますが、それを簡単に行う方法がわかりません。
1つの方法は、実行時エラーが発生する可能性のあるプログラム内のすべての可能なポイントの後にフラッシュ/ fsyncを実行することですが、これは明らかに良い解決策ではありません。このエラーログを使用する主な理由はデバッグであるため、定義上、実行時エラーが発生する可能性のあるすべての場所以外で、どこをフラッシュする必要があるかを事前に知ることはできません。そのような場所がたくさんあるので、私はそれらのすべてを試して/捕まえる必要がないことを望みます。
私はPyGTKを使用しているので、flush/fsyncを実行できるメインループは表示されません。
エラーの後に常にフラッシュとfsyncを実行するようにPythonに指示する方法はありますか、またはこの(マイナーな)問題を解決する方法を他のアイデアがありますか?