フラスコアプリケーションでwsgi-request-logger https://github.com/pklaus/wsgi-request-loggerを使用しており、要求パラメータ(つまり要求とともに送信される引数)も記録する必要があります。要求引数/フォームデータを出力または返す
のRequest.Formまたはrequest.argsを使用すると、動作しないと戻って -
のRuntimeError:要求コンテキストの外で作業します。
val['params'] = url_decode(environ.get('QUERY_STRING', '')) print val['params']
これは(それは両方のケースで同じものを返し、ミドルウェア、views.pyファイルでそれを試してみました)([])が動作してMultiDictを返していません。
if environ['REQUEST_METHOD'] == 'POST':
print parse_form_data(environ)[1]
これもMultiDict []を返します。
私がここで紛失しているものは得られません。ヘルプは素晴らしいだろう。
ミドルウェアを呼び出すコード。私はミドルウェアを少し編集して、今すぐローカルクローンでテストしているように、ファイル名をrequest_logger_wsgiに変更しました。
#!flask/bin/python
from app import app
from request_logger_wsgi import WSGILogger, ApacheFormatters
from logging.handlers import TimedRotatingFileHandler
def application(environ, start_response):
response_body = 'The request method was %s' % environ['REQUEST_METHOD']
response_body = response_body.encode('utf-8')
response_headers = [('Content-Type', 'text/plain'),
('Content-Length', str(len(response_body)))]
start_response('200 OK', response_headers)
print response_body, "231321"
return [response_body]
handlers = [ TimedRotatingFileHandler('access.log', 'd', 7) , ]
app.wsgi_app = WSGILogger(app.wsgi_app, handlers, ApacheFormatters.format_log)
app.run(debug=True)
こんにちは、お返事ありがとうございます。 OPを編集してコードを追加しました。それ以上のものが必要な場合は、それも追加します。 –
POSTリクエストの場合でもクエリ文字列は引数を与えません。 –
フォームデータはありません。しかし、クエリー文字列は、データを形成するために**さらに** POST要求に提供することもできます。本当にPOSTリクエストを記録しますか?それらには多くのデータが含まれている可能性があり、データのエンコーディングについて心配する必要があります。フォームが 'multipart/form-data'を使用している場合、例えばPOSTリクエストは改行を含むことができます。 –