如何在调试 = False 时记录有关 404 错误的信息



我有一个关于生产的django项目。 在我的settings.py文件中,Debug=False以避免Debug=True我听说我正在尝试设置的python日志记录模块时出现的安全风险。 但是在阅读了我理解的文档之后,我应该将日志记录实例放在可能产生错误的每段代码中,但是如果我需要处理 404 错误怎么办? 我该如何处理它们? 请任何人指导我

我认为在django 中大约有相当多关于 404 处理的信息。最基本的事情可能是 404 视图,您可以使用自定义逻辑覆盖它(我认为这不是首选,但在某些特定情况下可能会派上用场(:https://docs.djangoproject.com/en/3.0/topics/http/views/#customizing-error-views

首选方法是更深入地了解请求和响应处理的核心,您可以在其中操纵具有404或其他响应status_code的请求。在您的middleware中,您可以扩展和覆盖现有中间件的行为,或者添加自己的:https://docs.djangoproject.com/en/3.0/topics/http/middleware/

下面是一个简单的中间件示例,该中间件检查响应的状态代码,并在响应具有404status_code时使用log.warning。在此方案中,你将有一个位置负责记录所请求的错误路径。

# 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',
]

相关内容

最新更新