ruby-on-rails - 如何在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 ]
# (...)
那是行不通的。
解决方案
在您的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****"
推荐阅读
- arangodb - Arangodb groupby 查询多个字段
- asp.net - ASP.Net Core razor 页面处理程序成为一个包罗万象的路由
- python - 窗口上的 df.to_csv 格式问题
- entity-framework - 加快 linq 查询性能
- google-colaboratory - 我来自巴基斯坦,我可以购买 Google Colab Pro 进行实验吗?
- python-3.x - 按下时更改按钮的图像 - Python 3.7 Tkinter
- c# - Android Xamarin:如何授予 BindTelecomConnectionService 权限?
- azure-devops - Azure DevOps Boards - 在板上显示查询结果
- .htaccess - .htaccess 重定向与自定义 url 更改
- javascript - 在 PHP 网页中运行外部 JS