sys.excepthook?我想为未捕获的异常显示自定义500错误页面

时间:2014-06-20 17:56:25

标签: python django

我是python和django的新手,想要为未捕获的异常显示自定义500错误页面。我怎么做?我担心当发生未捕获的服务器错误时应用程序只显示空白页。

目前我在sitecustomize.py

中有这个代码段
import sys

def info(type, value, tb):
   if (#hasattr(sys, "ps1") or
       not sys.stderr.isatty() or
       not sys.stdin.isatty()):
       # stdin or stderr is redirected, just do the normal thing
       original_hook(type, value, tb)
   else:
       # a terminal is attached and stderr is not redirected, debug 
       import traceback, pdb
       traceback.print_exception(type, value, tb)
       print
       pdb.pm()
       #traceback.print_stack()

original_hook = sys.excepthook
if sys.excepthook == sys.__excepthook__:
     # if someone already patched excepthook, let them win
     sys.excepthook = info

现在我正在提高UnreadablePostError并且没有在后登录操作中捕获它。这样做会给我一个白页"发生服务器错误。请联系管理员。"文本。我尝试使用此代码段而不是信息函数中的original_hook来记录错误:

import logging
logger.error("Uncaught exception", exc_info=(type, value, tb))

Python解释器似乎没有使用sys.excepthook。我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果要向用户显示自定义500错误html页面,可以使用handler500。 如果您想记录例外,那么您不需要手动拦截所有例外 - 您只需添加logging settings

P.S。:我建议您查看sentry以处理来自多个生产服务器的错误,这样您就不会需要检查日志或创建任何类型的通知。

相关问题