12

问题与此大致相同,但是我希望 django 将其详细的请求信息记录到我的logging.FileHandler- 即,而不必查看我的网络服务器日志。我尝试设置默认记录器django.requests以将 4xx 和 5xx 请求信息以外的内容写入处理程序,但未能成功。

因此,在浏览文档并摆弄记录器和级别之后,我得出的结论是 django 实际上并没有制作很多日志语句 - 所以我希望确认 django 不会在内部记录非错误场景要求。

4

1 回答 1

17

我不能说我进行了详尽的搜索,但从django/core/handlers/base.pydjango 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 回答