Heroku:在日志中查看params和sql活动?

当我在服务器上查看我的heroku日志(使用heroku logs --tail --app myapp )时,我看到如下内容:

 2011-06-21T14:09:25+00:00 app[web.1]: Started PUT "/reports/19.xml" for 77.89.149.137 at 2011-06-21 07:09:25 -0700 2011-06-21T14:09:25+00:00 heroku[router]: PUT myapp.heroku.com/reports/19.xml dyno=web.1 queue=0 wait=0ms service=7ms status=401 bytes=28 2011-06-21T14:09:26+00:00 heroku[nginx]: PUT /reports/19.xml HTTP/1.1 | 77.89.149.137 | 656 | http | 401 

在我的本地日志中,我会看到这样的事情:

 Started PUT "/reports/19" for 127.0.0.1 at 2011-06-21 15:27:01 +0100 Processing by ReportsController#update as XML Parameters: {"report"=>{"workflow_status"=>"3"}, "id"=>"19"} Person Load (0.9ms) SELECT "people".* FROM "people" WHERE "people"."email" = 'madeupemai@lkklj.com' LIMIT 1 Report Load (0.4ms) SELECT "reports".* FROM "reports" WHERE "reports"."id" = 19 LIMIT 1 DEPRECATION WARNING: Object#returning has been deprecated in favor of Object#tap. (called from update_report at /home/max/work/rails_apps/flamingo_container/flamingo/vendor/plugins/resource_this/lib/resource_this.rb:135) Creating scope :open. Overwriting existing method Task.open. Task Load (2.0ms) SELECT "tasks".* FROM "tasks" WHERE "tasks"."id" = 14 LIMIT 1 Completed 200 OK in 1648ms (Views: 568.2ms | ActiveRecord: 3.2ms) 

即有更多信息,特别是params,来自路由器的信息,生成的sql,任何渲染的模板等等。

有谁知道我怎么能让我的heroku日志像我的开发一样冗长? 我已经做了以下事情:

1)在相关(rails 3)环境文件中设置日志级别:

 config.log_level = :debug 

2)告诉heroku使用不同的记录器级别,如http://devcenter.heroku.com/articles/logging中所述

 heroku config:add LOG_LEVEL=DEBUG --app myapp #from CLI 

两者都没有任何区别……任何想法都有吗?
谢谢,最大

您基本上想要在Heroku日志中显示SQL / params输出。 您可以通过将以下显示的行添加到production.rb文件中的config块来执行此操作:

 MyAppNameHere::Application.configure do # add this line config.logger = Logger.new(STDOUT) end 

顺便说一下,将日志级别设置为debug只是意味着当你在Heroku上时Rails.logger.debug将输出到日志

在你的production.rb中添加config.log_level = :debug和redeploy。 这将为您提供与开发模式相同的日志:)

您想要的详细日志由log_subscriber.rb中的函数start_processing生成。

action_controller / log_subscriber.rb:

 def start_processing(event) payload = event.payload params = payload[:params].except(*INTERNAL_PARAMS) info " Processing by #{payload[:controller]}##{payload[:action]} as #{payload[:formats].first.to_s.upcase}" info " Parameters: #{params.inspect}" unless params.empty? end 

我在开发和生产环境中检查了rails 3.0.4。 在这两种环境中,我们都有详细的日志。

这是一个信息级日志。 这就是调试日志级别不改变输出的原因。

我安装了heroku rails_log_stdout ( Heroku日志记录 )使用的插件,但我仍然有所需的输出。

现在,我无法用heroku测试,找出你没有所有日志的原因。

在heroku示例中(请参阅Heroku日志记录,部分日志检索),我们看不到“处理”和“参数”行。 我认为当应用程序在heroku上运行时(或者以某种方式禁用)或者heroku从空格开始跳过日志时,不会调用此方法。 你能尝试记录以空格开头的消息,看看heroku是否正在显示它们吗?

在生产模式下,Rails不会生成这些日志。 http://groups.google.com/group/heroku/browse_thread/thread/d778fafedc9a378a

真正的问题实际上是由于Heroku与rails配合使用的方式。 解决这个问题的正确方法是添加: gem 'rails_12factor', group: :production

有关此事的更多信息,请参阅https://devcenter.heroku.com/articles/rails-integration-gems

看起来美洲狮服务器与Heroku不能很好地配合。 在我的项目中,我尝试了一切,但它仍然不会记录。 然后我用Unicorn取代了Puma,然后显示了bam,完整的日志。