将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
但我不确定如何在生产模式下运行时获取该信息?
任何帮助非常感谢,
亚历
答
这是我在我的应用程序控制器:
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应用程序中起作用。
答
将数据记录到数据库是不明智的,因为这些错误通常可能由数据库问题引起。如果您的站点流量很大,如果文件系统没有响应,那么将错误追加到文件(位于单独的磁盘上)会更安全,那么您的数据库无法正常工作。更安全的是使用另一台服务器上托管的异步消息队列。在这两种情况下,您都可以通过定期分析日志输出来创建报告。
检查http://stackoverflow.com/questions/1160720/log-to-database-instead-of-log-files还有类似的问题讨论 – Bohdan