如何增加Heroku日志排放详细程度以包括所有Rails应用程序详细信息?

时间:2011-11-06 22:46:12

标签: ruby-on-rails ruby-on-rails-3 logging heroku ruby-on-rails-3.1

目前我正在Heroku Celadon Cedar上运行一个Rails 3.1.x应用程序,似乎日志冗长非常缺乏。我已将日志级别设置为DEBUG la heroku config:add LOG_LEVEL=DEBUG --app app_name,这与他们的建议相符,但除此之外我似乎无法提取log / *文件内容。

从Thin更改为Unicorn确实略微增加了详细程度,但仅限于Web worker请求。我仍然无法下拉数据库请求等等。

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

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

2 个答案:

答案 0 :(得分:12)

在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

答案 1 :(得分:0)

我认为ActiveRecord记录器对象以DEBUG严重性级别发送所有SQL查询日志。您可能需要调整Rails.logger日志级别以获取生产中的日志级别。

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