1
我想記錄500內部服務器錯誤期間發生的追溯。我已經成立了中間件,我希望這樣做:通過中間件記錄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()返回(無,無,無)。 response
本身是一個包含回溯的字符串,但它是一種奇怪的格式化字符串,不容易解析。我想要回溯格式化爲一個很好的列表格式,如sys.exc_info()會給我。我怎樣才能得到這個工作?
請注意,process_exception不可能,因爲這是針對不使用Django Views的API,並且process_exception僅捕獲視圖中引發的異常。
在理論上似乎很好,但我還沒有看到一個工作示例,它不必以某種方式利用中間件。我不知道爲什麼。如果你有一個你在野外看到過的工作,我就會全神貫注。 – user1427661
這不是理論上的,你不必滾動自己的中間件來記錄未處理的異常。所需要的只是配置你想要的處理程序,並將其添加到設置中的'django.requests'記錄器中。 –