Python を使用して Google App Engine でキャッチオール グローバル例外ハンドラを作成することは可能ですか?
基本的に、キャッチされていないすべての例外をキャッチして適切に処理し、トレースバックを含むメールを送信したいと考えています。
現在、キャッチされていないすべてのエラーについて、コードのスニペットを含むスタック トレースがユーザーに表示されます。これは望ましくありません。
Python を使用して Google App Engine でキャッチオール グローバル例外ハンドラを作成することは可能ですか?
基本的に、キャッチされていないすべての例外をキャッチして適切に処理し、トレースバックを含むメールを送信したいと考えています。
現在、キャッチされていないすべてのエラーについて、コードのスニペットを含むスタック トレースがユーザーに表示されます。これは望ましくありません。
はい、可能です。アプリケーションから例外レポートを電子メールで受け取ることができるereporter
パッケージを
使用して、これを行うことができます。
Ereporter は 2 種類の例外を報告します。
logging.exception('Your handled exception')
すべての例外をキャッチするには、 handle_exception()メソッドをオーバーライドするカスタム BaseHandler クラスを作成します。すべてのリクエスト ハンドラは、この基本クラスから継承する必要があります。Custom Error Responses
も
参照してください。
BaseHandler クラスの簡単な例を次に示します。
class BaseHandler(webapp.RequestHandler):
def handle_exception(self, exception, debug_mode):
if debug_mode:
webapp.RequestHandler.handle_exception(self, exception, debug_mode)
else:
logging.exception(exception)
self.error(500)
self.response.out.write(template.render('templdir/error.html', {}))
BaseHandler で次のように呼び出して、元の handle_exception を呼び出したい場合があります。
webapp.RequestHandler.handle_exception(self, exception, debug_mode)
ここに文脈があります。
from google.appengine.ext import webapp
import sys
import traceback
class BaseHandler(webapp.RequestHandler):
def handle_exception(self, exception, debug_mode):
from main import emaildevs
emaildevs('An error occurred on example.com', ''.join(traceback.format_exception(*sys.exc_info())))
webapp.RequestHandler.handle_exception(self, exception, debug_mode)
試してみてください: 次を除いて呼び出します: sendemail