Вход в Ruby on Rails в производственном режиме

Я хотел бы просмотреть некоторые переменные в контроллере, он попробовал следующее:

Rails.logger.debug "Year: #{Time.now.year}"

puts "Year: #{Time.now.year}, Month: #{@month}"

где я могу увидеть вывод Logger или Puts в производственном режиме? Нужно ли мне что-то настраивать, чтобы где-то их просматривать?

3 ответа

Решение

Нормальный уровень журнала в производстве info, так debug логи не отображаются.
Измените логирование на

Rails.logger.info "Year: #{Time.now.year}"

показать это в production.log,

В качестве альтернативы (но это не очень хорошая идея) вы можете повысить уровень регистрации в /config/environments/production.rb:

config.log_level = :debug

Обновление Rails 4.2:

Теперь уровень отладки по умолчанию во всех средах :debug (как упомянуто @nabilh).
Если вы хотите, чтобы в вашей производственной среде было меньше разговоров, вы можете сбросить уровень регистрации в /config/environments/production.rb к прежнему :info:

config.log_level = :info

Хотя я считаю, что @ martin-m прав, вы, вероятно, не хотите загромождать свои логи, используя config.log_level = :debug в /config/environments/production.rbЯ считаю, что уровень ведения журнала по умолчанию во всех средах debug по состоянию на рельсы 4.2. Так debug журналы (и все уровни вверх) будут отображаться в рабочей, если не указано иное.

Итак, в ответ на ваш вопрос, теперь вы можете написать:

Rails.logger.debug "Year: #{Time.now.year}" и увидеть результаты в /log/production.log,

Смотрите здесь для более подробной документации. Вот документация для Rails 4.1 для сравнения.

Если у вас есть производственное приложение, которое вам может потребоваться временно изменить уровни журнала, вы можете использовать переменную среды, чтобы иметь возможность устанавливать уровень без изменения кода и повторного развертывания, хотя ваше приложение необходимо перезапустить, вы можете использовать этот подход :

config / среда / production.rb

      MyApp::Application.configure do
#...
  log_level = :info #default state
  [:debug, :info, :warn, :error, :fatal, :unknown].each do |level|
    if ENV['LOG_LEVEL']&.to_sym == level
      log_level = level
    end
  end
 config.log_level = log_level
#...
end
Другие вопросы по тегам