使用Django将404 Not Found页面记录到Sentry

时间:2015-01-26 22:05:30

标签: django sentry raven

我想在Django 1.7中将 404 Not Found 错误代码记录到Sentry。

Django提供了什么钩子,所以我可以推送logger.error()这些消息?

任何其他想法如何使用Django和Sentry监视非500缺失/怪异行为的页面?

3 个答案:

答案 0 :(得分:2)

检出Django Sentry文档的Reporting other status codes部分:

如果要向Sentry报告404 Not Found和未捕获的异常(500 Internal Server Error)以外的其他错误,则需要为这些状态代码编写自己的Django视图。例如:

# in the root URL conf urls.py

handler404 = 'myapp.views.my_custom_page_not_found_view'

# myapp/views.py

from django.http import HttpResponseNotFound
from sentry_sdk import capture_message


def my_custom_page_not_found_view(*args, **kwargs):
    capture_message("Page not found!", level="error")

    # return any response here, e.g.:
    return HttpResponseNotFound("Not found")

有关自定义错误的更多信息,请阅读relevant Django Docs

答案 1 :(得分:1)

查看自定义错误处理程序的文档。

基本上我认为您可能希望为要捕获的错误设置视图,这些错误可以呈现您需要的模板或记录消息等; Customising error views。 显然,在这些视图中,您可以访问请求对象的某些部分,以收集您可能需要的任何信息。

答案 2 :(得分:1)

Sentry有一个中间件可以自动记录404。

# Use ``MIDDLEWARE_CLASSES`` prior to Django 1.10
MIDDLEWARE = (
    'raven.contrib.django.raven_compat.middleware.Sentry404CatchMiddleware',
    ...,
) + MIDDLEWARE

请参阅Sentry Django文档中的"404 Logging"以获取更多信息,包括如何忽略某些路径的404.