12

質問はこれとほとんど同じですlogging.FileHandlerが、ウェブサーバーのログを見る必要はなく、django に詳細なリクエスト情報をログに記録してもらいたいのです。django.requests4xx および 5xx 以外の要求情報をハンドラーに書き込むようにデフォルトのロガーをセットアップしようとしましたが、失敗しました。

したがって、ドキュメントを調べてロガーとレベルをいじった結果、django は実際には多くのログ ステートメントを作成しないという結論に達しました。リクエスト。

4

1 に答える 1

17

徹底的な検索を行ったとは言えませんがdjango/core/handlers/base.py、django 1.4.1 で確認できることから、django.requestロガーは実際には警告とエラー状態 (4xx/5xx) にのみ使用されます。

とはいえ、あらゆる種類のロギングを行うミドルウェアを作成するのは簡単です。始めるのに非常に簡単なものは次のとおりです。

from time import time
from logging import getLogger

class LoggingMiddleware(object):
    def __init__(self):
        # arguably poor taste to use django's logger
        self.logger = getLogger('django.request')

    def process_request(self, request):
        request.timer = time()
        return None

    def process_response(self, request, response):
        self.logger.info(
            '[%s] %s (%.1fs)',
            response.status_code,
            request.get_full_path(),
            time() - request.timer
        )
        return response
于 2012-10-17T20:05:40.047 に答える