Rails:在生产环境中配置记录器以使用 Papertrail
Posted
技术标签:
【中文标题】Rails:在生产环境中配置记录器以使用 Papertrail【英文标题】:Rails: Configure logger in production to work with Papertrail 【发布时间】:2018-10-15 01:20:19 【问题描述】:我正在尝试将我的记录器配置为在部署到 Heroku 的 Rails 5.1.4 应用程序上工作。我正在使用 Papertrail,但我的自定义日志消息没有显示在那里。我没有收到任何错误。怎么了?
我的配置/环境/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
我的 Heroku 变量:
RAILS_LOG_TO_STDOUT enabled
RACK_ENV production
RAILS_ENV RAILS_ENV
在我的方法中,我一直在尝试这样调用记录器:
Rails.logger.info "Logger message..."
我也尝试按照以下步骤操作:https://help.papertrailapp.com/kb/configuration/configuring-centralized-logging-from-ruby-on-rails-apps/#configure-rails-environment,但也没有成功。在这种情况下,我安装了 gem remote_syslog_logger 并将我的 config/environments/production.rb 代码更改为:
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = RemoteSyslogLogger.new('my-app-name.papertrailapp.com', 5432)
end
【问题讨论】:
【参考方案1】:Heroku 强制记录到 STDERR/STDOUT。设置自定义日志目标不会在 Heroku 的环境中产生影响。要将日志记录到 Papertrail(或任何其他远程系统日志服务器),您需要 set up a log drain。
【讨论】:
以上是关于Rails:在生产环境中配置记录器以使用 Papertrail的主要内容,如果未能解决你的问题,请参考以下文章
在 React on Rails 中访问 NODE_ENV 环境变量