如何在Tornado中设置自定义未处理的异常处理程序?

时间:2012-09-01 00:43:32

标签: python web tornado

我正在尝试使用覆盖tornado.web.Application._handle_request_exception方法来实现自定义未处理请求异常日志记录:

def _handle_request_exception(self, e):
    logging.error('error')  # Just for test.

但是我看到了相同的日志输出,如:

2012-09-01 03:35:09,947 [7399] root ERROR: Uncaught exception GET / (127.0.0.1)
HTTPRequest(...)
Traceback (most recent call last):

而不是我的自定义消息。我做错了什么?

1 个答案:

答案 0 :(得分:7)

首先,_handle_request_exception方法位于RequestHandler,而不是Application

其次,您不能使用主命名空间中的新定义覆盖绑定方法:

def _handle_request_exception(self, e):
    logging.error('error')

您需要继承RequestHandler类:

class BaseHandler(tornado.web.RequestHandler):
    def _handle_request_exception(self, e):
        logging.error('error')

然后,您的所有处理程序都应继承自BaseHandler