7

私は長い間これを機能させるように努めてきましたが、今は本当に気が遠くなっています。SOとFlaskのドキュメントで見つけられるすべてのことを実行しようとしましたが、アプリケーションをデバッグできるように、単純なエラーログが機能していません。以下は貼り付けたコードです-

# main.py
from flask import Flask
import logging

app = Flask(__name__)
file_handler = logging.FileHandler(filename='/tmp/election_error.log')
file_handler.setLevel(logging.WARNING)
app.logger.addHandler(file_handler)

@app.route('/')
def hello():
   return "hello
   #missing quotes to generate error

if __name__ == "__main__":
   app.run()


#wsgi file
import sys
import logging
sys.path.insert(0, "/var/www/voting_app")
logging.basicConfig(stream=sys.stderr)
from main import app as application


# apache2 conf file
WSGIDaemonProcess voting_app threads=5
WSGIScriptAlias /election /var/www/voting_app/voting_app.wsgi

LogLevel info

<Directory /var/www/voting_app>
        WSGIProcessGroup voting_app
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
</Directory>

どこが悪いのか教えてください。どうもありがとう。

4

2 に答える 2

6

あなたが作成した特定のエラー (構文エラー) が原因で、WSGI スクリプト ファイルが mod_wsgi に読み込まれませんでした。このエラーは、ログ モジュールを使用してセットアップしたログ ファイルではなく、Apache エラー ログ ファイルに記録されます。Apache エラー ログ ファイルを確認しましたか?

リクエストの実行中に例外が発生した場合、Flask はデフォルトで 500 エラー ページに変換し、それ以外の場合は詳細の表示を抑制します。このようなランタイム例外をメールまたはログに記録するには、Flask を別の方法でセットアップする必要があります。

http://flask.pocoo.org/docs/errorhandling/

開発目的でブラウザーに返される 500 ページにランタイム例外を表示する場合は、Flask デバッグ モードを有効にする必要があります。これは、app.debug を True に設定することによって行われます。

http://flask.pocoo.org/docs/config/?highlight=app%20debug

ユーザー向けの本番システムでは、デバッグ モードを有効にしないでください。

于 2012-11-04T19:45:59.420 に答える
3

コンパイル時の例外ではなく、実行時の例外を生成する必要があります。引用符がない場合はコンパイル時の例外であり、ロギングコードが実行されることはありません。

代わりに例外を発生させてください。

@app.route('/')
def hello():
   raise Exception('Deliberate exception raised')
于 2012-11-04T09:45:09.703 に答える