.. _howto-error-reporting: 電子メールによるエラー通知 ========================== :revision-up-to: 8961 (1.0) サイトを公開しているときには、 :setting:`DEBUG` を常に切りましょう。 :setting:`DEBUG` を切ると、サーバの動作は軽くなり、エラーページを介して悪意 あるユーザにアプリケーションの詳細が漏れてしまうのを防げます。 その代わり、 :setting:`DEBUG` を ``False`` にすると、サイト上で発生したエラー を一切表示できません。ユーザはみな、公開用に作られたエラーページを見るだけ です。実運用のサイトで発生したエラーを追跡したい場合のために、 Django はエ ラーの詳細をメールで送信するように設定できます。 .. _Server errors: サーバのエラー -------------- :setting:`DEBUG` を ``False`` にすると、コードが例外を送出し、その例外が捕 捉されず、結果的に 500 エラーになった場合に、 Django は :setting:`ADMINS` 設定にリストされている全てのユーザにメールを送信します。これは、管理者が何 らかのエラーにすぐに気づけるようにするためです。:setting:`ADMINS` はエラー の説明文と、 Python トレースバックと、エラーを引き起こした HTTP リクエスト の詳細情報を受け取ります。 この機能を無効にするには、:setting:`ADMINS` 設定から全てのユーザを削除して ください。 .. _404 errors: 404 エラー ---------- Django は、サイトのリンクが切れている (404 "page not found") 時にメールを送 信するよう設定できます。 404 エラーメールは、以下の条件下で送信されます: * :setting:`DEBUG` が ``False`` に設定されている。 * :setting:`SEND_BROKEN_LINK_EMAILS` が ``True`` に設定されている。 * :setting:`MIDDLEWARE_CLASSES` 設定に ``CommonMiddleware`` が登録され ている (デフォルトの設定です) これらの条件が揃っていると、コード中で 404 例外が生じ、かつリクエストにリファ ラが設定されているときに、 Django は :setting:`MANAGERS` 設定に登録された全 てのユーザにメールを送信します (リファラ付きが条件なのは、リファラのないリ クエストに対する404 エラーで管理者を煩わせないためです)。 :setting:`IGNORABLE_404_ENDS` や :setting:`IGNORABLE_404_STARTS` を使えば、 特定の 404 に対するレポート送信を抑制できます。例えば:: IGNORABLE_404_ENDS = ('.php', '.cgi') IGNORABLE_404_STARTS = ('/phpmyadmin/',) のようにすると、 URL が ``.php`` や ``.cgi`` で終わるような URL や ``/phpmyadmin/`` で始まる URL に対する 404 は報告 *されません* 。 この機能を無効にしたければ、 :setting:`SEND_BROKEN_LINK_EMAILS` を ``False`` に設定してください。 .. seealso:: 自作の :ref:`例外ミドルウェア ` を書けば、エラー レポートを自作できます。エラー処理をカスタマイズしたければ、 Django 組 み込みのエラー処理をエミュレートして、 :setting:`DEBUG` が ``False`` の ときだけ、レポートやログ記録を行うとよいでしょう。