Подтвердить что ты не робот

Подробное ведение журнала Django

Вопрос почти такой же, как этот, однако я хочу, чтобы django записывал его подробные данные запроса в мой logging.FileHandler - т.е. вместо того, чтобы смотреть на мои журналы веб-серверов. Я пробовал и не смог настроить регистратор по умолчанию django.requests для записи чего-то другого, кроме 4xx и 5xx запрашивать информацию обработчикам.

Итак, вывод, который я пришел после прохождения документов и возиться с регистраторами и уровнями, заключается в том, что django на самом деле не делает много операторов журнала, поэтому я ищу, чтобы подтвердить, что django не выполняет внутреннюю регистрацию не сценарии ошибок для запросов.

4b9b3361

Ответ 1

Я не могу сказать, что сделал исчерпывающий поиск, но из того, что я вижу в 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 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