将Ruby on Rails中的500/404错误保存到数据库中?

问题描述:

有没有办法将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

这是我在我的应用程序控制器:

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应用程序中起作用。

将数据记录到数据库是不明智的,因为这些错误通常可能由数据库问题引起。如果您的站点流量很大,如果文件系统没有响应,那么将错误追加到文件(位于单独的磁盘上)会更安全,那么您的数据库无法正常工作。更安全的是使用另一台服务器上托管的异步消息队列。在这两种情况下,您都可以通过定期分析日志输出来创建报告。