2016-05-30 1 views

答えて

1

これはdjango middlewareによって行うことができます。 process_responseとprocess_requestの2つのメソッドがあります。ここでは、必要なすべてのデータをログに記録できます。

class ProfileMiddleware(object): 

    def process_request(self, request): 
    # do your logging here 

    def process_response(self, request, response): 
    # do your logging here 

しかし、これはAPIだけでなく、すべての要求を記録します。 apiだけをログに記録する場合は、このメソッドのurlで/ apiのような接頭辞とログ情報を簡単にチェックできます。

+0

お返事ありがとうございます。私は次のことをして500のエラーがあります。何が間違っているのか分かりません。 クラスMyMiddleware(): DEF process一(自己、リクエスト): リターン応答(ステータス= status.HTTP_200_OK) DEF process_response(自己、リクエスト、レスポンス): リターン応答(status = status.HTTP_200_OK) あなたは何か気にしませんか? – linuxfreak

+1

ログのみを必要とする場合は、レスポンスではなく、Noneを返します。ログには何がありますか? – Aldarund

+0

あなたの答えをありがとう。コードは機能します。 クラスMyMiddleware(): デフprocess一(自己、リクエスト): プリント "XXXXX" 戻りなし デフ(自己、リクエスト、レスポンス)process_response: プリント "XXXXX" リターン・レスポンス – linuxfreak

1

これは、情報の記録方法とAPIの構築方法によって異なります。何か簡単な試みのために

あなたのAPIは、クエリの入力のいくつかの並べ替えを取るので、あなたのAPIリターン

でログ

callAPI(query)  
logging.info(query) 

と同じでそれをラップする必要がありlogging

に探して

return APIJSONanswer 
logging.info(APIJSONanswer) 
+0

私はロギングモジュールをよく知っています。しかし、私の要点は、各ビューセットでlogging.infoを呼びたくないということです。コールが各ビューセットにルーティングされる前に呼び出される共通の関数がある場合、そこでは単にlogging.infoを呼び出すことができます。 – linuxfreak

+0

する必要があります。あなたのビルドによって異なります。あなたの設定についてもっと知る前に、私はもっと具体的になることはできません。 – MadsVJ

+0

djangoフレームワークに共通の機能があり、ビューセットに行く前にヒットしますか? – linuxfreak

関連する問題