【问题标题】:Heroku: see params and sql activity in logs?Heroku:查看日志中的参数和 sql 活动?
【发布时间】:2011-09-19 14:29:57
【问题描述】:

当我在服务器上查看我的 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)

即包含更多信息,尤其是参数、来自路由器的信息、生成的 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

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

【问题讨论】:

    标签: ruby-on-rails logging heroku


    【解决方案1】:

    看起来 puma 服务器不能很好地与 Heroku 配合使用。在我的项目中,我尝试了所有方法,但仍然无法登录。然后我用 Unicorn 替换了 Puma,然后 bam,正在显示完整的日志。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        您实际上是想在 Heroku 日志中显示 SQL / params 输出。您可以通过将下面显示的行添加到您的 production.rb 文件中的 config 块来做到这一点:

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

        顺便说一句,将日志级别设置为调试只是意味着Rails.logger.debug 将在您使用 Heroku 时输出到日志

        【讨论】:

        • 太棒了!这也对我有用,Heroku 支持告诉我,我的一颗宝石正在覆盖输出。将代码添加到production.rb而不是application.rb可能更合适,只是一个想法。
        • 这很好用,但现在设置“heroku config:add LOG_LEVEL=FATAL”似乎什么也没做。无论我将 LOG_LEVEL 设置为什么,现在都会显示所有日志。
        • 顺便说一句,我刚刚尝试过,它使应用程序陷入崩溃循环
        • 这对我也不起作用。也许它适用于非雪松堆栈之一?
        • 在 Heroku 生产环境中设置日志级别调试是否安全?
        【解决方案4】:

        你想要的详细日志由 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 日志记录,日志检索部分),我们看不到“处理”和“参数”行。我认为当应用程序在 heroku 上运行时(它被某种方式禁用)或者 heroku 跳过以空格开头的日志时,要么不调用此方法。您能否尝试记录以空格开头的消息并查看 heroku 是否显示它们?

        【讨论】:

          【解决方案5】:

          在您的 production.rb 中添加 config.log_level = :debug 并重新部署。这将为您提供与开发模式相同的日志:)

          【讨论】:

          • 嗯。您是否尝试过用其他方法捕获它们?像railscasts.com/episodes/277-mountable-engines 这样快速而肮脏的东西可能会奏效。显然,对于您所需要的东西来说,这太过分了,但是如果没有其他方法起作用……还是您认为纯粹是记录器没有实际输出该信息?
          【解决方案6】:

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

          【讨论】:

          • 它在我的 rails 2 应用程序中。这是rails 3的变化吗?我更倾向于相信这是 Heroku 特有的。
          猜你喜欢
          • 2016-10-22
          • 2014-02-13
          • 2015-08-15
          • 2014-04-12
          • 2011-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多