2014-02-15 6 views
1

我正在嘗試爲當前的網絡應用程序設置Sentry。它可以是configured to act as a logger如何在金字塔中配置友好的錯誤頁面的異常視圖,但仍將錯誤傳遞給記錄器?

不過,我有一個看起來像這樣的除外圖:

@view_config(context=Exception, 
      renderer='hitchedup:templates/errors/500.html') 
def error_view(exc, request): 
    """Display a friendly error message""" 
    return {} 

的想法是,只要在網站上發生的任何異常,我可以給用戶提供一個友好的消息。

但是,我仍然如何將錯誤傳遞給記錄器?現在,異常視圖捕獲所有異常,但他們永遠不會到達記錄器。

我嘗試在異常視圖中內聯並捕獲exc,然後直接通過客戶端將它發送給Sentry,但是如果我在最初引發異常的情況下收到了完整的堆棧跟蹤,我會得到滿意的堆棧跟蹤。

如何獲得友好的500頁並且仍然具有良好的日誌記錄和錯誤報告?

回答

3

裸機raise關鍵字是票證。

取而代之的是使用日誌記錄,通過友好的消息在視圖中捕獲異常。然後,使用raise而不帶參數,這會引發原始異常。捕獲異常並使用Sentry客戶端捕獲並傳遞它。

最終的觀點是這樣的:

from raven.base import Client 
from pyramid.view import view_config 


@view_config(context=Exception, 
      renderer='hitchedup:templates/errors/500.html') 
def error(context, request): 
    """Display an error message and record it in Sentry.""" 
    client = Client() 
    try: 
     raise 
    except Exception: 
     client.captureException() 
    return {} 
相關問題