我是在同一条船上,你,我不喜欢默认的机制。幸运的是,使用web2py定制异常处理非常简单。查看web2py目录根目录下的routes.py。我已经添加了以下到矿井:
routes_onerror = [( 'APPLICATION_NAME/*', '/ APPLICATION_NAME /错误/索引')]
此路由任何例外我的错误处理程序控制器(APPLICATION_NAME /控制器/error.py)中,我定义为我的画质指数:
def index():
if request.vars.code == '400':
return(dict(app=request.application,
ticket=None,
traceback="A 400 error was raised, this is controller/method path not found",
code=None,
layer=None,
wasEmailed=False))
elif request.vars.code == '404':
return(dict(app=request.application,
ticket=None,
traceback="A 404 error was raised, this is bad.",
code=None,
layer=None,
wasEmailed=False))
else:
fH = file('applications/%s/errors/%s' % (request.application,request.vars.ticket.split("/")[1]))
e = cPickle.load(fH)
fH.close()
__sendEmail(request.application,e['layer'],e['traceback'],e['code'])
return(dict(app=request.application,
ticket=request.vars.ticket,
traceback=e['traceback'],
code=e['code'],
layer=e['layer'],
wasEmailed=True))
正如你所看到的非400和404错误,我通过电子邮件发送的回溯到自己,然后调用相应的视图/错误/ index.html的。在制作过程中,这种观点给出了一个通用的“我很抱歉发生了错误,开发人员已通过电子邮件发送”。在我的开发服务器上,它显示格式化的回溯。
感谢您的快速回复马克,这似乎是一个很好的解决方案! – Fredrik 2010-08-18 19:52:43