我的应用程序在我的linode帐户中处于生产模式,并且在一个页面中出现500内部服务器错误消息:
We're sorry, but something went wrong.
但是在我的开发环境中,这个页面工作正常。
如何调试此错误?
如何在生产模式中查看错误来源?
我希望rails在生产模式中显示错误。
我该怎么做?
谢谢!
答案 0 :(得分:4)
如果您有权访问ssh,请通过ssh登录服务器并转到rails目录中的rails日志目录。
在那里运行命令tail production.log
。如果这不能为您提供足够的信息,您也可以执行tail -n100 production.log
(给出生产日志的最后几百行)。
如果已通过heroku部署,则可以通过在本地控制台中运行heroku logs
来访问日志。 (更多信息请https://devcenter.heroku.com/articles/logging)
我还发现在生产中运行时使用exception_notification gem https://github.com/rails/exception_notification很有帮助,因为它会在发生错误时通过电子邮件发送堆栈跟踪。很多其他人也使用Hoptoad(http://hoptoadapp.com/)或Exceptional(http://www.exceptional.io/),但我更喜欢简单的exception_notification gem。
此外,在极少数情况下,当我无法追踪错误作为最终措施时,我有时会在远程服务器防火墙上临时打开端口3000并cd到rails项目并使用日志级别运行rails server production
设置为在config / environments / production.rb中调试,这样我就可以在控制台中看到错误,然后在完成后关闭端口。
希望有所帮助。
答案 1 :(得分:1)
tail -n100 production.log
只会显示日志文件的最后100行。以防您希望实时查看日志。
使用此
tail -1000f log/production.log