スタックの奥深くで例外を生成できるコードを書いています。これらの例外をキャッチし、エラー処理モジュールによる処理のためにそれらを送信する最上部に近いレイヤーがあります。私が望むのは、エラー処理モジュールがスタック トレースをエラー ログに出力できるようにすることですが、これを行う方法を理解するのは難しいと感じています。
背景に関する注意事項:
コードはマルチスレッド化されているため、sys.last_traceback の動作については確信が持てません。
例外自体のコンストラクターでスタックをキャプチャしようとしました。sys.last_traceback は、この場合は None になることがあり (未処理の例外の場合にのみ存在するため)、常に正しいとは限りません。私は現在、使用していじっています
self.stack = traceback.format_stack()[:-2]
例外のコンストラクターで、これは情報に関しては有望に見えますが、それを行う「正しい」方法のようには感じません
私が見つけたこれを行う方法のすべての例は、後のエラー処理モジュールではなく、except ブロックにスタック トレースを出力する方法を示しています。(たとえば、Python コードのメソッドから現在の呼び出し履歴を出力する を参照してください)
Python ドキュメント ( http://docs.python.org/library/traceback.html ) でtraceback モジュールをマイニングしましたが、これが私が望むことを行うかどうかを判断できませんでした。sys.last_traceback から取得する可能性があるため、トレースバックのフォーマットに主に関係しているようです。使用例がいくつかありますが、私がやろうとしていることと一致するものはありません。
これをやりたいと思ったのは私が初めてだとは思わないので、何かが欠けているに違いありません。正しい方向へのポインタは大歓迎です。