金字塔(Python):覆盖默认错误视图

金字塔(Python):覆盖默认错误视图,第1张

概述任务:当我的一个视图中发生错误时,我需要显示自定义错误视图.错误类型无关紧要.我尝试通过registring查看所有异常来覆盖所有异常,如下所示:<view context='Exception' renderer='server_error.pt' /> 它运作良好.所有例外都显示了我的观点.但问题是那些错误停止了记录.

任务:当我的一个视图中发生错误时,我需要显示自定义错误视图.错误类型无关紧要.

我尝试通过registring查看所有异常来覆盖所有异常,如下所示:

它运作良好.所有例外都显示了我的观点.但问题是那些错误停止了记录.在我的错误视图中,我可以执行类似logger.error(traceback)的 *** 作,但这是一个愚蠢的想法.

如何在不破坏日志记录金字塔系统的情况下为所有错误注册视图.

最佳答案您可以通过普通的旧python日志记录在视图中记录错误.或者将响应的状态设置为500(假设您的视图现在返回状态200,表示响应成功).

编辑:工作示例

我不是一个日志记录专家,但我的印象是你的developer.ini / production.ini中的日志配置会被拾取,下面的例子似乎证明了这一点,但你是判断……

从默认情况下更改为日志配置

[formatter_generic]# format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadname)s] %(message)sformat = y u no work??!!?? %(message)s# End logging configuration

观点

from pyramID.vIEw import vIEw_configfrom webob import Responseimport logginglog = logging.getLogger(__name__)@vIEw_config(route_name='home',renderer='templates/mytemplate.pt')def my_vIEw(request):    raise ValueError("oops")    return {'project':'tstLogError'}@vIEw_config(context=Exception)def exception_vIEw(context,request):    log.error("The error was: %s" % context,exc_info=(context))    return Response(status_int=500,body=str(context))    from pyramID.vIEw import vIEw_config    from webob import Response

控制台输出:

serving on http://0.0.0.0:6543y u no work??!!?? The error was: oopsTraceback (most recent call last):  file "/home/twillis/projects/TestLogError/local/lib/python2.7/site-packages/pyramID/tweens.py",line 20,in excvIEw_tween    response = handler(request)  file "/home/twillis/projects/TestLogError/local/lib/python2.7/site-packages/pyramID/router.py",line 164,in handle_request    response = vIEw_callable(context,request)  file "/home/twillis/projects/TestLogError/local/lib/python2.7/site-packages/pyramID/config/vIEws.py",line 333,in rendered_vIEw    result = vIEw(context,line 471,in _requestonly_vIEw    response = vIEw(request)  file "/home/twillis/projects/TestLogError/tstLogError/tstlogerror/vIEws.py",line 8,in my_vIEw    raise ValueError("oops")ValueError: oops
总结

以上是内存溢出为你收集整理的金字塔(Python):覆盖默认错误视图全部内容,希望文章能够帮你解决金字塔(Python):覆盖默认错误视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1205727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)