Подтвердить что ты не робот

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" = '[email protected]' 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) Сказали, что герою использовать другой уровень регистратора, как описано в http://devcenter.heroku.com/articles/logging

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

Ничего не изменилось... какие-нибудь идеи?
спасибо, max

4b9b3361

Ответ 1

По сути, вы хотите показать вывод SQL/params в журналах Heroku. Вы можете сделать это, добавив строку, показанную ниже, в блок config в вашем файле production.rb:

MyAppNameHere::Application.configure do

  # add this line
  config.logger = Logger.new(STDOUT)

end

Кстати, установка уровня журнала для отладки означает, что Rails.logger.debug будет выводиться в журналы, когда вы находитесь на Heroku

Ответ 2

В вашем production.rb добавьте config.log_level = :debug и повторно разверните. Это даст вам те же журналы, что и в режиме разработки:)

Ответ 3

Подробный журнал, который вы хотите, генерируется функцией start_processing в log_subscriber.rb.

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

Я проверил с рельсами 3.0.4 в среде разработки и производства. В обеих средах у нас есть подробные журналы.

Это журнал уровня информации. Поэтому уровень журнала отладки не меняет результат.

Я установил плагин, используемый героем rails_log_stdout (Запись в журнал Heroku), но у меня все еще есть желаемый результат.

Прямо сейчас, я не могу проверить с помощью герою, чтобы узнать, почему у вас нет всех журналов.

В примере heroku (см. запись в журнале Heroku, извлечение журнала раздела) мы не видим строк "Обработка" и "Параметры". Я думаю, что либо этот метод не вызывается, когда приложение работает на heroku (оно каким-то образом отключено), либо heroku пропускает журналы, начинающиеся с пробелов. Не могли бы вы попытаться записать сообщения, начинающиеся с пробелов, и посмотреть, показывает ли их герою?

Ответ 5

Реальная проблема на самом деле связана с тем, как Heroku работает вместе с рельсами. Правильный способ решить это - добавить: gem 'rails_12factor', group: :production

Подробнее см. https://devcenter.heroku.com/articles/rails-integration-gems

Ответ 6

Похоже, сервер Puma не очень хорошо работает с Heroku. В моем проекте я все пробовал, но он все равно не регистрировался. Затем я заменил Puma Unicorn, и bam, показаны полные журналы.