Ruby on rails 如何增加Heroku日志消耗详细信息以包含所有Rails应用程序详细信息?

Ruby on rails 如何增加Heroku日志消耗详细信息以包含所有Rails应用程序详细信息?,ruby-on-rails,ruby-on-rails-3,logging,heroku,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Logging,Heroku,Ruby On Rails 3.1,目前,我正在Heroku Celadon Cedar上运行Rails 3.1.x应用程序,似乎非常缺乏日志详细信息。我已将日志级别设置为调试laheroku配置:add log\u level=DEBUG--app app\u name,这与他们的建议相符,但除此之外,我似乎无法提取日志/*文件内容 从精简到Unicorn的更改确实略微增加了冗余度,但仅限于web工作者请求。我仍然无法撤销db请求等等 通过heroku“drain”机制最大化日志冗余度的最佳方法是什么,以便将所有实例日志拉入一个

目前,我正在Heroku Celadon Cedar上运行Rails 3.1.x应用程序,似乎非常缺乏日志详细信息。我已将日志级别设置为调试la
heroku配置:add log\u level=DEBUG--app app\u name
,这与他们的建议相符,但除此之外,我似乎无法提取日志/*文件内容

从精简到Unicorn的更改确实略微增加了冗余度,但仅限于web工作者请求。我仍然无法撤销db请求等等

通过heroku“drain”机制最大化日志冗余度的最佳方法是什么,以便将所有实例日志拉入一个内聚日志


(理想情况下,我希望包含一种方法,将其转储到我自己的日志服务器中,因为这只是一种痛苦,因为无法及时查看特定事件和周围条件。)

我认为ActiveRecord logger对象发送所有具有调试严重性级别的SQL查询日志。您可能需要调整Rails.logger日志级别以使其也投入生产


既然您对将所有Rails和Heroku日志转储到外部服务感兴趣,我建议您尝试免费的附加组件。(免责声明,我为Progstr工作)。该插件有一个RubyGem,它将收集所有Rails日志(通常以log/*结尾的所有日志)。它还将设置一个日志转储,用于获取所有系统级Heroku日志。此外,您还可以使用一个很酷的web UI轻松搜索日志和其他一些不错的功能。

在staging.rb、production.rb或您正在运行的任何环境中,您可以插入以下内容:

STDOUT.sync = true

logger = Logger.new(STDOUT)
logger.level = 0 # Must be numeric here - 0 :debug, 1 :info, 2 :warn, 3 :error, and 4 :fatal
# NOTE:   with 0 you're going to get all DB calls, etc.

Rails.logger = Rails.application.config.logger = logger

### NOTE: Be sure to comment out these:
#   See everything in the log (default is :info)
#   config.log_level = :debug  # Commented out as per Chris' instructions from Heroku

#   Use a different logger for distributed setups
#   config.logger = SyslogLogger.new

我已经添加了Progstr,但是我仍然没有在日志输出中看到更多的详细信息(即,我认为应该从log/*中看到的内容)。在config/environments/.rb方面,我缺少什么吗?例如,我想知道,即使我设置了
heroku config:add LOG\u LEVEL=DEBUG
,并且设置了“config.consived\u all\u requests\u local=true”以更清楚地查看异常,我仍然无法提取数据库查询以及似乎应该在LOG/*中看到的所有额外详细信息。显然,在Cedar中通过shell登录是不够的。@ylluminate,问题是ActiveRecord logger将以调试级别记录SQL语句。Rails尽力停止在生产中记录调试事件(这确实是一件好事)。您仍然可以通过调整Rails记录器及其日志设备使其记录SQL调试语句。或者,您可以添加
progstr ruby
gem,并设置
progstr::RailsLogger
类,如下所述:。请注意,
Progstr::RailsLogger
直接将事件发送到我们的服务器,而不是将它们路由到syslog。例如:我已经安装了progstr,但是我非常希望看到所有登台事件(即,不是生产)的额外信息。为了进行设置,我只需将production.rb复制到staging.rb,并调整了一些设置,但是我怀疑有一种方法可以强制登台在这个日志记录方面表现得像开发一样?您也可以为登台环境设置它-只需将
Progstr::RailsLogger
部分复制到您的staging.rb文件中即可:非常感谢这里的反馈。经过很多努力,我终于找到了解决这个问题的“正确”方法。我现在就把它作为正确答案贴出来,供大家参考。事实证明,有一些gem覆盖了正常行为,如果发生这种情况,必须强制执行。这似乎只发生在Heroku上。>我在cedar stack上为我的Rails 3应用程序尝试了上述解决方案,但该应用程序无法启动。获取错误
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.0.7/lib/rails/rack/log\u tailer.rb:8:in
size::没有这样的文件或目录-log/production.log(Errno::enoint)2012-02-01T02:12:41+00-app[web.1]:from/app/vendor/bundle/ruby/1.9.1/gems/rack-1.2.4/lib/rack/server.rb:247:in
新的'2012-02-01T02:12:00+web.00]:from/app/vendor/bundle/ruby/1.9.1/gems/railties-
有趣。我建议您就此联系支持部门。您是否尝试通过shell:
heroku run bash
登录应用程序,查看production.log是否存在,或者该文件夹是否存在权限问题?我之前只在staging.rb env上设置了此选项,因此可能有一个约束阻止在生产中使用此选项。。。虽然不在顶部,但没有意义。尝试heroku bash后发现不存在日志。也许从那时起就有了变化。将联系支持部门。顺便说一句,我试着把xyz_whtaever放到我的控制器文件中,这些文件出现在heroku日志中。但这并不理想。谢谢你的快速回复。