加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 22:12:55 所属栏目:Python 来源:网络整理
导读:任务:当我的一个视图中发生错误时,我需要显示自定义错误视图.错误类型无关紧要. 我尝试通过registring查看所有异常来覆盖所有异常,如下所示: 它运作良好.所有例外都显示了我的观点.但问题是那些错误停止了记录.在我的错误视图中,我可以执行类似logger.erro

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

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

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

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

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

编辑:工作示例

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

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

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

观点

from pyramid.view import view_config
from webob import Response
import logging
log = 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:6543
y u no work??!!?? The error was: oops
Traceback (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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读