2017-09-03 115 views
0

我正在Heroku上使用一個大的Node.js應用程序,由Papertrail維護日誌記錄。我有一箇中央錯誤處理和日誌記錄功能,目前它只是向控制檯記錄一個錯誤,顯示一個通用的「發生錯誤!」對話框,並將客戶端重定向到特定頁面(具體取決於發生錯誤的位置)。但是,Papertrail和Heroku都沒有將其視爲真正的錯誤,並且在發生錯誤時我不會收到任何類型的通知或警報。悄悄地向Papertrail報告錯誤

目前,這是我的函數:

utilities.errorLogger = (err) => { 
    console.error(err); 
}; 

我試圖拋出錯誤,這就像如下:

utilities.errorLogger = (err) => { 
    throw new Error(err); 
}; 

但隨後的錯誤顯示給客戶端而不是被重定向,讓最終用戶感到困惑。同樣,將錯誤放入try-catch塊並不會改變我目前所擁有的任何東西(錯誤已記錄,但未被Papertrail或Heroku拾取)。

utilities.errorLogger = (err) => { 
    try { 
     throw new Error(err); 
    } 
    catch (err) { 
     console.error(err); 
    } 
}; 

如何我默默地拋出一個錯誤Papertrail和Heroku上就拿起並當作一個錯誤,而無需將錯誤發送到客戶端?我希望能夠默默地處理錯誤並在後臺繼續進行報告,而不是將任何錯誤詳細信息發送給客戶端。

回答

0

最終找出答案。我使用的是KeystoneJS,它帶有一個我以前沒見過的默認錯誤處理程序;我現在修改它只是重定向人,同時仍然能夠記錄錯誤。