2013-11-28 8 views
8

おそらく私はdocumentationで何かを見ていないでしょう。フラスコ内のすべての例外を傍受するには?

私はいくつかのhttpエラーを処理するのではなく、すべての例外を処理したいと思います。理由は - 自分のカスタムロジックを使ってログに記録したいのですが(車輪を再発明するような音ですが、ロギングを完全に制御する必要があります。 。

これは私が今フラスコを起動する方法である。ここでapp.run私は例外が発生するたびに、それは私の例外ハンドラメソッドを呼び出すように指示するにはどうすればよい。サーバを起動する?

def main(): 
    args = parse_args() 
    app.config['PROPAGATE_EXCEPTIONS'] = True 
    flask_options = {'port' : args.port} 
    if args.host == 'public': 
     flask_options['host'] = '0.0.0.0' 
    app.run(**flask_options) 

if __name__ == '__main__': 
    _sys.exit(main()) 

答えて

14

あなたはドキュメントhttp://flask.pocoo.org/docs/patterns/errorpages/#error-handlersを参照してください、errorhandlerを使用する必要がありますおよびhttp://flask.pocoo.org/docs/api/#flask.Flask.errorhandler。ディスパッチャで発生したすべての例外を取得できますが、エラーハンドラでは例外を処理できません。ルすべての例外:

@app.errorhandler(Exception) 
def all_exception_handler(error): 
    return 'Error', 500 

どのように私は、明示的な例外ハンドラを好むか、この例のためのデコレータ(クラスベースのビュー)を使用し、これまで。

+2

これは最近のバージョンではもう機能しません。 0.12では、私は再びHTMLエラーページを取得しています。 – bwind

+0

@bwindどのようにして0.12で同様のロジックを実装すべきか考えてみましょうか? –

+0

@TuukkaMustonen:はい、ここでは別の質問で私の答えを見てください:http://stackoverflow.com/questions/29332056/global-error-handler-for-any-exception/41655397#41655397 – bwind

関連する問題