我想查看控制器中的一些变量,它尝试了以下操作:
Rails.logger.debug "Year: #{Time.now.year}"
puts "Year: #{Time.now.year}, Month: #{@month}"
在哪里可以看到 Logger 或 Puts 处于生产模式的输出?我是否需要设置一些东西才能在某处查看这些内容?
我想查看控制器中的一些变量,它尝试了以下操作:
Rails.logger.debug "Year: #{Time.now.year}"
puts "Year: #{Time.now.year}, Month: #{@month}"
在哪里可以看到 Logger 或 Puts 处于生产模式的输出?我是否需要设置一些东西才能在某处查看这些内容?
生产中的正常日志级别是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
in来弄乱您的日志/config/environments/production.rb
,但我相信所有环境中的默认日志记录级别都是debug
从 Rails 4.2 开始的。因此debug
,除非您另外指定,否则日志(以及所有级别以上)将在生产中显示。
因此,针对您的问题,您现在可以写:
Rails.logger.debug "Year: #{Time.now.year}"
并查看结果/log/production.log
。
如果您有一个可能需要临时更改日志级别的生产应用程序,您可能希望使用环境变量来设置级别而无需修改代码和重新部署,尽管您的应用程序需要重新启动,您可以采用这种方法:
配置/环境/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