Вход в 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