【发布时间】:2014-03-28 04:35:00
【问题描述】:
我想记录在 500 内部服务器错误期间发生的回溯。我已经设置了我希望这样做的中间件:
import traceback
import sys
import logging
logger = logging.getLogger(__name__)
class ProcessExceptionMiddleware(object):
'''
Log exceptions and tracebacks any time an exception is encountered
'''
def process_response(self, request, response):·
if response.status_code == 500:
logger.info('\n'.join(traceback.format_exception(*sys.exc_info())))
return response
唉,当发生 500 错误并触发此中间件时,sys.exc_info() 返回 (None, None, None)。 response 本身是一个包含回溯的字符串,但它是一个格式怪异且不易解析的字符串。我希望将回溯格式化为像 sys.exc_info() 这样的漂亮列表格式。我怎样才能得到这个工作?
请注意 process_exception 是不可能的,因为这是针对不使用 Django 视图的 API,并且 process_exception 仅捕获视图中引发的异常。
【问题讨论】: