4

场景:与其让我通过 SSH 进入一个盒子来检索堆栈跟踪,我更愿意非技术同事通过电子邮件将错误发​​送给我!

Django中有没有办法或钩子来做这样的事情?例如

def 500_error_happened(request):    # psuedocode >__<
    if request.user.is_staff:
        show_the_debug_stack_trace_page()
    else:
        show_user_friendly_500_html_page()
4

2 回答 2

2

你可能想看看哨兵:

https://github.com/getsentry/sentry

这样,您可以记录通常使用 DEBUG=True 看到的错误和堆栈跟踪,将它们聚合并更深入地研究它们。Sentry 可以配置为向您发送电子邮件,以便您立即收到通知。

另一个不需要新依赖项的选项是使用AdminEmailHandler

https://docs.djangoproject.com/en/dev/topics/logging/#django.utils.log.AdminEmailHandler

但是,调试可能需要的一些信息可能很敏感,不应通过电子邮件发送。这就是为什么即使是上面提到的 Django 文档也推荐使用像 Sentry 这样的东西。

于 2013-05-17T08:52:04.017 回答
0

找到了答案!您可以使用显示technical_500_response给超级用户的中间件:

from django.views.debug import technical_500_response
import sys

class UserBasedExceptionMiddleware(object):
    def process_exception(self, request, exception):
        if request.user.is_superuser:
            return technical_500_response(request, *sys.exc_info())

(来自https://djangosnippets.org/snippets/935/

于 2014-06-03T06:23:47.060 回答