51

我想查看控制器中的一些变量,它尝试了以下操作:

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

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

在哪里可以看到 Logger 或 Puts 处于生产模式的输出?我是否需要设置一些东西才能在某处查看这些内容?

4

3 回答 3

122

生产中的正常日志级别是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
于 2013-05-30T09:30:31.337 回答
9

虽然我相信@martin-m 是正确的,您可能不想通过使用config.log_level = :debugin来弄乱您的日志/config/environments/production.rb,但我相信所有环境中的默认日志记录级别都是debug从 Rails 4.2 开始的。因此debug,除非您另外指定,否则日志(以及所有级别以上)将在生产中显示。

因此,针对您的问题,您现在可以写:

Rails.logger.debug "Year: #{Time.now.year}"并查看结果/log/production.log

有关更详细的文档,请参见此处是 Rails 4.1 的文档进行比较。

于 2015-10-28T19:01:24.510 回答
0

如果您有一个可能需要临时更改日志级别的生产应用程序,您可能希望使用环境变量来设置级别而无需修改代码和重新部署,尽管您的应用程序需要重新启动,您可以采用这种方法:

配置/环境/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
于 2021-10-12T14:54:41.417 回答