2011-11-24 30 views
2

我已經在我的Web應用程序中達到了一個要求,我們已準備好上線,想到我發現了某種方式來捕獲用戶遇到的應用程序錯誤,轉發他們到適當的支持。在您的Web應用程序進入生產後處理錯誤的方式

當前網站當前捕獲任何錯誤並重定向到錯誤頁面。它還捕獲支持人員修復錯誤所需的所有數據。我們希望它做的是爲用戶提供功能,以便以某種方式將錯誤詳細信息發送給支持人員。我們已經想到了到目前爲止

方式包括:

  • 只需打印頁面文本用戶複製上的錯誤。
  • 提供一個按鈕,將錯誤複製到剪貼板上以便粘貼到電子郵件中。
  • 提供幫助表單供用戶填寫,發送錯誤信息。
  • 提供一個「發送錯誤」按鈕,只是將錯誤轉發到配置的或用戶輸入的電子郵件地址。
  • 將頁面加載中的錯誤詳細信息存儲在數據庫表中,供支持人員查看。

這些對我來說都不是超級乾淨或直覺。有沒有人想出一種獨特而乾淨的方式來處理這種情況?

注意:我正在尋找解決方案來處理系統中報告生成的錯誤,而不是用戶反饋的解決方案。

回答

6

如果您顯示用戶需要的所有信息,爲什麼不直接將其記錄在數據庫中或發送電子郵件以支持?這樣你就不必擔心用戶出現了錯誤。將它們發送到您的「對不起,但請稍後再試一次」頁...

+1

另外,用戶通常討厭填寫表單來報告錯誤。這個bug已經很煩人了。現在有一個@#$#@ $表單來處理! –

0

你可以看看插入UserVoice。捕獲用戶反饋並且易於設置非常棒。

0

如果可能,我建議爲錯誤創建一個唯一的ID,並確保它顯示給用戶並登錄到服務器日誌中。這樣就很容易將用戶遇到的錯誤與您在後端登錄的錯誤聯繫起來。

請記住,查看與該用戶的整個交互集可能導致錯誤,而不僅僅是最終的異常消息可能會很有趣。

1

您可以嘗試將錯誤保存到數據庫中的表中,但是您還必須瞭解數據庫是源的情況的錯誤。

我通常所做的是將錯誤寫入Windows錯誤日誌以及唯一代碼(GUID)。在用戶看到的錯誤消息中,包含GUID並讓他們知道他們可以聯繫您的支持團隊,如果他們想詢問錯誤或報告有關當時正在發生的事情的更多詳細信息。

要寫入錯誤日誌,請撥打System.Diagnostics.EventLog.WriteEntry()。編寫工具來查詢事件日誌也很容易,可以使用Log Parser等工具以編程方式或在命令行上查詢事件日誌。

0

考慮到你最近的評論是粗體,我建議你使用錯誤日誌。你沒有提到你在使用什麼語言,但是如果你使用的是java,你可以聲明你的錯誤頁面(例如<%@ page errorPage="error.jsp" %>)並查看處理的異常。這對預期的錯誤很有效,但可能會出現意外錯誤。

0

作爲Web開發人員,我們有一個胖客戶端開發通常不具備的簡單優勢。我們有能力從頂層捕捉所有的錯誤,並優雅地處理它們。

因此,我們應該:

  1. 有辦法當錯誤發生時

豈不是巨大的,能夠自動了解:

  1. 自動收到電子郵件其中包含發生錯誤時的錯誤的詳細信息
  2. 獲取有關錯誤的描述性信息
  3. 知道在哪裏你的代碼中的錯誤發生
  4. 日誌等信息,用戶,IP,以及所有形式的信息
  5. 處理來自一個錯誤處理頁面
  6. 多個應用程序和網站提供了一個參考號碼和友好消息給用戶
  7. 防止從可能危及您的Web site.Prevent關鍵信息泄漏

Abscraction錯誤代碼的惡人:

400  Bad Request 
401;1 Unauthorized - Login Failed 
401;2 Unauthorized - Login failed due to server configuration 
404  Not Found 
500  Internal Server Error 
500;12 Internal Server Error - Application Restarting 
500;13 Internal Server Error - Server Too Busy 
500;15 Internal Server Error - Direct Requests For Global.asa 
500;100 Internal Server Error - language (ASP,PHP ,JSP) Error 
相關問題