2011-09-30 43 views
1

有沒有辦法將500/404等錯誤保存到您的數據庫中,以便您可以檢查它們以查看網站上是否存在任何錯誤?將Ruby on Rails中的500/404錯誤保存到數據庫中?

我以爲你可以從500.html頁面發送JS AJAX請求。例如

/errors/create/?message=error_message&ip=123&browser=ie9 

但我不確定如何在生產模式下運行時獲取該信息?

任何幫助非常感謝,

亞歷

+0

檢查http://stackoverflow.com/questions/1160720/log-to-database-instead-of-log-files還有類似的問題討論 – Bohdan

回答

0

這是我在我的應用程序控制器:

def rescue_action_in_public(exception) 
    #This is called every time a non-local error is thrown. 
    #Copy the error to the db for later analysis. 
    Error.create :exception_name => exception.exception.to_s, :backtrace_info => exception.backtrace.to_s 
    #Then handle the error as usual: 
    super 
end 

正如你可以看到我有我創建了一個錯誤的模型,這節省了每當它發生時,新的數據庫。有一點需要記住的是,回溯對於字符串列來說非常重要,所以你需要更大的文本類型。這在我的Rails 3.0.5應用程序中起作用。

0

將數據記錄到數據庫是不明智的,因爲這些錯誤通常可能由數據庫問題引起。如果您的站點流量很大,如果文件系統沒有響應,那麼將錯誤追加到文件(位於單獨的磁盤上)會更安全,那麼您的數據庫無法正常工作。更安全的是使用另一臺服務器上託管的異步消息隊列。在這兩種情況下,您都可以通過定期分析日誌輸出來創建報告。