トレースバックオブジェクトを保存して、アクセスできるファイルにピクルする可能性を考えていました。このユースケースの例として、実行するためにいくつかの Python コードをファーム コンピューターに送信し、それが失敗した場合があります。セッションを開いてそのトレースバックにアクセスし、問題をデバッグするだけでなく、問題をデバッグできると便利です。トレースバックのログ。これを行う方法があるかどうかはわかりませんが、そうでない場合はなぜできないのかを尋ねる価値があると思いました。
2 に答える
traceback.print_exception(type, value, traceback[, limit[, file]])
テキストまたはjsonで使用して保存したり、ドキュメントを参照したりできます
役に立ったと思ったら、正しいとマークするか、賛成票を投じてください..:)
コードの書き方にもよりますが、try ステートメントがおそらく最良の答えです。どのエラーも Python の builtin を継承する単なるクラスであるException
ため、スローされたエラーに関する詳細情報が必要な場合はどこでもカスタム エラーを発生させることができます。エラーの名前を変更するか、最初の引数として適切な文字列を渡すだけです。try
コードを作成して except ステートメントを使用するとexcept CustomError as e
、通常のインスタンスとして except ステートメントの e から必要なすべての情報を引き出すことができます。例:
あなたのコードは次のようになります。
def script():
try: codeblock
except Exception as e: raise Error1('You hit %s error in the first block'% e)
try: codeblock 2
except Exception as e: raise Error2('You hit %s error in the second block' % e)
try: script()
except Exception as e:
with open('path\to\file.txt','w') as outFile:
outFile.write(e)
最後の部分は、実際には独自のログ ファイルを作成するだけですが、どこかに書き留めておく必要がありますよね?
traceback
上記のモジュールを使用すると、そこからエラー情報を取得できます。ここのコマンドのいずれかで、トレースバックのリストを取得できます:
http://docs.python.org/2/library/traceback.html
一方、ログ ファイルを見ないようにしようとしている場合、traceback モジュールは、ログ ファイルと同じものを別の形式で提供するだけです。ValueError
コードに独自のエラー ステートメントを追加することで、実際に何が起こったのかについて不可解な情報よりも多くの情報を得ることができます。特別なエラーのトレースバックを出力すると、問題に関するさらに詳しい情報が得られる場合があります。