当我在服务器上查看我的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
两者都没有任何差异......任何人的想法? 谢谢,最大
答案 0 :(得分:39)
您实际上想要在Heroku日志中显示SQL / params输出。您可以将以下显示的行添加到config
文件中的production.rb
块中来执行此操作:
MyAppNameHere::Application.configure do
# add this line
config.logger = Logger.new(STDOUT)
end
顺便说一下,将日志级别设置为debug只是意味着当你在Heroku上时Rails.logger.debug
将输出到日志
答案 1 :(得分:2)
在您的production.rb中添加config.log_level = :debug
并重新部署。这将为您提供与开发模式相同的日志:)
答案 2 :(得分:1)
您想要的详细日志由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 logging)使用的插件,但我仍然有所需的输出。
现在,我无法使用heroku进行测试,找出为什么没有所有日志。
在heroku示例中(参见Heroku日志记录,部分日志检索),我们没有看到“Processing”和“Parameters”行。我认为当应用程序在heroku上运行时(或者以某种方式禁用)或者heroku从空格开始跳过日志时,不会调用此方法。你能尝试记录以空格开头的消息,看看heroku是否正在显示它们吗?
答案 3 :(得分:0)
Rails在生产模式下不生成这些日志。 http://groups.google.com/group/heroku/browse_thread/thread/d778fafedc9a378a
答案 4 :(得分:0)
真正的问题实际上是由于Heroku与rails配合使用的方式。解决此问题的正确方法是添加:gem 'rails_12factor', group: :production
有关此事的更多信息,请参阅https://devcenter.heroku.com/articles/rails-integration-gems
答案 5 :(得分:0)
看起来美洲狮服务器与Heroku不能很好地配合。在我的项目中,我尝试了一切,但它仍然不会记录。然后我用Unicorn取代了Puma,然后显示了bam,完整的日志。