Django详细请求记录

时间:2012-10-17 19:46:30

标签: django logging

问题与this大致相同,但是我希望django将详细的请求信息记录到我的logging.FileHandler - 也就是说,而不是必须查看我的网络服务器日志。我尝试过设置默认记录器django.requests并尝试写入4xx和5xx以外的其他内容 向处理者请求信息。

因此,在完成文档和摆弄记录器和级别之后,我得出的结论是django实际上并没有做出很多日志声明 - 所以我想确认django是不会在内部记录请求的非错误情况。

1 个答案:

答案 0 :(得分:18)

我不能说我做了详尽的搜索,但是从我在django 1.4.1的django/core/handlers/base.py看到的情况来看,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