Как записать информацию об ошибке 404 при Debug = False - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть django проект на производстве. В моем settings.py файле Debug=False, чтобы избежать угроз безопасности, которые возникают, когда Debug=True я слышал о python модуле журналирования, который я пытаюсь настроить. Но после прочтения документации, как я понимаю, я должен поместить экземпляры журналирования в каждый фрагмент кода, где может возникнуть ошибка, но что, если мне нужно обработать 404 ошибки? Как я могу справиться с ними? Пожалуйста, кто-нибудь направляет меня

1 Ответ

1 голос
/ 16 февраля 2020

Я думаю, что около 404 обработки в django имеется довольно много информации. Самым базовым c может быть представление 404, которое вы можете переопределить с помощью своей пользовательской логики (что, я думаю, не является предпочтительным, но может пригодиться в некоторых конкретных c случаях): https://docs.djangoproject.com/en/3.0/topics/http/views/#customizing -error -views

Предпочтительный метод будет глубже проникать в суть обработки запросов и ответов, где вы можете манипулировать вашими запросами, используя код статуса ответа 404 или любой другой. В вашем middleware вы можете расширить и переопределить поведение существующих промежуточных программ или добавить свое собственное: https://docs.djangoproject.com/en/3.0/topics/http/middleware/

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

# myproject.middleware.py
import logging

logger = logging.getLogger(__name__)


class PageNotFoundMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        if response.status_code == 404:
            logger.warning("Page not found at {}".format(request.path))
        return response

в вашем settings.py теперь вы можете добавить промежуточное ПО:

MIDDLEWARE = [
   ...
   'myproject.middleware.PageNotFoundMiddleware',
]
...