据我所知,使用heroku在生产环境中进行调试的最佳方法是验证其日志。我想将变量显示为该终端的字符串,但无法使用下面的配置。
通过命令:
heroku logs
我想从给定页面的控制器中显示以下内容:
puts "****test****"
此heroku article表示需要配置:
config.ru
$stdout.sync = true
我在这两行之间写:
require_relative 'config/environment'
$stdout.sync = true # <----
run Rails.application
在同一篇文章中,我们需要将config.logger = Logger.new(STDOUT)
添加到“到您应用的配置中以获取标准记录”。
因此,在这些行之间的 production.rb 中添加了
# (...)
config.logger = Logger.new(STDOUT) # <---
config.log_level = :debug
config.log_tags = [ :request_id ]
# (...)
那行不通。
答案 0 :(得分:1)
在您的production.rb
文件中,您应该具有此配置(该配置应该已经存在,但是可以肯定地使用它)
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
这告诉您需要确保RAILS_LOG_TO_STDOUT
环境变量在生产中具有值。
$ heroku config:set RAILS_LOG_TO_STDOUT=enabled
然后,在您的控制器中,您可以调用类似
logger.debug "****test****"