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

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

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

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

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

在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 

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

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