Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在TurboGears 2.2.2中的RootController中使用自定义sys.excepthook_Python_Logging_Turbogears - Fatal编程技术网

Python 如何在TurboGears 2.2.2中的RootController中使用自定义sys.excepthook

Python 如何在TurboGears 2.2.2中的RootController中使用自定义sys.excepthook,python,logging,turbogears,Python,Logging,Turbogears,我想在我的TB应用程序中将所有异常记录到日志文件中。所以,我尝试像往常一样使用自定义sys.excepthook。但是仍然会引发每个异常,并且不会记录任何内容。这是我的密码: class RootController(BaseController): secc = SecureController() error = ErrorController() def __init__(self): self.installExceptHook()

我想在我的TB应用程序中将所有异常记录到日志文件中。所以,我尝试像往常一样使用自定义sys.excepthook。但是仍然会引发每个异常,并且不会记录任何内容。这是我的密码:

class RootController(BaseController):
    secc = SecureController()
    error = ErrorController()

    def __init__(self):
        self.installExceptHook()
        super(RootController, self).__init__()

    def installExceptHook(self):
        def exceptHook(type, value, tb):
            logger = logging.getLogger('app')
            logger.critical(''.join(traceback.format_exception(type, value, tb)))
        sys.excepthook = exceptHook
当我在索引方法中提出ValueError时:

@expose('app.templates.index')
def index(self, **kwargs):
    raise ValueError
    return dict(page = 'index')
我仍然在浏览器中获得WebError回溯页面,并且没有记录任何内容

你知道我做错了什么吗?有什么想法吗?

来自文档():

当引发异常并取消捕获时,解释器调用 sys.excepthook[…]在Python程序中,这发生在 程序退出

现在,由于WebError捕获并处理异常(您的应用程序甚至没有从此类异常中退出),因此异常不会到达调用
sys.excepthook
的点


对于快速而肮脏的解决方案,您可以尝试在配置中设置
full\u stack=False
以禁用WebError中间件(),这当然意味着您可以在Web服务器中处理故障响应代码


如果您只想记录异常,但仍然使用WebError调试/电子邮件功能,您可以设置一个自定义中间件,将其包装在应用程序中,记录异常并将其传递。

谢谢。我担心会有一些TurboGears中间件。@nu.frix在我寻找答案时,我总是发现挖掘TG源代码很有帮助!有时它们非常鼓舞人心:我尝试了好几次,但并不总是成功:)当我被“重定向”到第五个文件时,我放弃了:D