【问题标题】:500 in Heroku logs, but no error details from Rails (even with rails_12factor)Heroku 日志中为 500,但 Rails 中没有错误详细信息(即使使用 rails_12factor)
【发布时间】:2015-07-22 03:28:43
【问题描述】:

当我跟踪日志并点击我的应用程序时,我有 heroku[router] 告诉我我收到了 500,并且应用程序显示通常的“我们很抱歉,但出了点问题”消息......但没有日志中来自 Rails 的其他详细信息,以告诉我导致 500 的原因。

我已经阅读了其他几个询问此问题的线程,但它们大多以人们建议执行rake:db migrate 来修复错误但不幸的是没有进一步讨论日志记录。 (是的,我确定没有待处理的迁移????)

  • 我安装了 rails_12factor gem
  • 我尝试在production.rb 中设置config.log_level = :debug
  • 我尝试创建一个配置变量 LOG_LEVEL 设置为 DEBUG(它应该取代配置设置)
  • 我已将$stdout.sync = true 设置为config.ru as suggested here

我错过了什么?

顺便说一句,我尝试使用 Heroku 使用的数据库的备份在本地重现我的实际问题,但我无法重现它,所以我最终不得不深入了解这个日志记录问题。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 heroku


    【解决方案1】:

    我首先通过手动添加来使其工作:

    config.logger = Logger.new(STDOUT)

    到 production.rb 但这掩盖了真正的问题......

    RACK_ENVRAILS_ENV 都设置为 staging 而我在 :production 设置中加载了 gem...所以尽管 Heroku 告诉我它在实例启动时使用了 rails_12factor gem,它不是真的(我认为如果它不是生产环境,它就不会在那里列出,错误的假设!)

    staging.rb 正在加载 production.rb,这就是为什么在那里设置 STDOUT 起作用,从而进一步混淆了问题。

    感谢您的回复,并希望这对其他人有所帮助 - 请检查您的配置变量和/或更改 gem 的加载位置! :)

    【讨论】:

    • 确实如此。如果您捆绑列表,您应该看到github.com/heroku/rails_serve_static_assets 确保它是版本 0.0.4。您在部署输出中是否收到任何警告?
    • 感谢您回复@Schneems! bundle list 的输出给出了 * rails_12factor (0.0.3) * rails_serve_static_assets (0.0.4) * rails_stdout_logging (0.0.3) Heroku 在部署时的构建输出没有任何警告,并确认:Using rails_12factor 0.0.3 Using rails_serve_static_assets 0.0.4 Using rails_stdout_logging 0.0.3
    • @jmasson 我确实将 RACK_ENV 和 RAILS_ENV 设置为生产并安装 rails_12factor 但我仍然得到 500 而不是完整的日志
    【解决方案2】:

    在 heorku 上调试错误通常会变得很困难。

    对于面临类似问题的人,我建议使用PaperTrail heroku 插件进行日志记录,它在一定限度内是免费的。

    它是实时的,并提供搜索日志、事件挂钩、邮件警报等设施。你永远不会在 heroku 上调试错误。

    您可以使用 heroku cli 命令简单地安装它。 heroku addons:create papertrail

    【讨论】:

    • 我喜欢 Papertrail,并且也将它用于此应用程序,但它仍然只获取您提供的日志,因此仍需要完成上述操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2019-06-28
    • 2015-12-18
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多