18.3 cgitb -- CGI スクリプトのトレースバック管理機構

バージョン 2.2 で 新たに追加 された仕様です。

cgitb モジュールでは、Python スクリプトのための特殊な例外処理を 提供します。(実はこの説明は少し的外れです。このモジュールはもともと 徹底的なトレースバック情報を CGI スクリプトで生成した HTML 内に表示 するための設計されました。その後この情報を平文テキストでも 表示できるように一般化されています。) このモジュールの有効化後に捕捉されない例外が生じた場合、 詳細で書式化された報告が Web ブラウザに送信されます。この報告には 各レベルにおけるソースコードの抜粋が示されたトレースバックと、現在動作 している関数の引数やローカルな変数が収められており、問題のデバッグを 助けます。オプションとして、この情報をブラウザに送信する代わりに ファイルに保存することもできます。

この機能を有効化するためには、単に自作の CGI スクリプトの最初に以下の一行を 追加します:

import cgitb; cgitb.enable()

enable() 関数のオプションは、報告をブラウザに表示するか どうかと、後で解析するためにファイルに報告をログ記録するかどうかを 制御します。

enable( [display[, logdir[, context [, format]]]])
この関数は、sys.excepthook を設定することで、 インタプリタの標準の例外処理を cgitb モジュールに肩代わり させるようにします。

オプションの引数 display は標準で 1 になっており、 この値は 0 にしてトレースバックをブラウザに送らないように抑制する こともできます。引数 logdir はログファイルを配置する ディレクトリです。オプションの引数 context は、トレースバック の中で現在の行の周辺の何行を表示するかです; この値は標準で 5 です。 オプションの引数 format"html" の場合、出力は HTML に書式化されます。その他の値を指定すると平文テキストの出力を 強制します。デフォルトの値は "html" です。

handler( [info])
この関数は標準の設定 (ブラウザに報告を表示しますがファイルには ログを書き込みません) を使って例外を処理します。 この関数は、例外を捕捉した際に cgitb を使って報告 したい場合に使うことができます。 オプションの info 引数は、例外の型、例外の値、トレースバック オブジェクトからなる 3 要素のタプルでなければなりません。これは sys.exc_info() によって返される値と全く 同じです。info 引数が与えられていない場合、現在の 例外は sys.exc_info() から取得されます。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。