首页 > 解决方案 > 如何在heroku日志上打印文本?

问题描述

据我所知,使用 heroku 在生产中调试的最佳方法是验证它的日志。我想将一个变量作为字符串显示到这个终端,但我还不能使用下面的配置。

从命令:

heroku logs

我想从给定页面的控制器中显示如下内容:

puts "****test****"

这篇heroku文章说它需要配置:

配置.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 ]

  # (...)

那是行不通的。

标签: ruby-on-railsheroku

解决方案


在您的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****"

推荐阅读