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的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 生产日志轮换

如何防止Rails在生产过程中从Action View登录

19--Rails环境配置

在 React on Rails 中访问 NODE_ENV 环境变量

rails中使用grape做api,生产环境用nginx做代理,获取真实的ip

在生产环境中使用 Rails 7 中的 importmaps 时出现 404 错误