Rails - 有条件地记录特定主机名

Rails - conditionally log for a specific hostname

我正在寻找一种方法来配置 Rails 服务器日志,仅当客户端已联系特定主机名时。例如我可以做到 http://public.example.com doesn't get logged, but http://debug.example.com(相同的底层 Rails 应用程序服务器)确实被记录(或者理想情况下比常规主机更详细地记录)。这将有助于生产调试。

您可以使用 gem Lograge 自定义您的日志。 gem 将使您对日志有更多的自定义。比如你的情况,我会这样做

安装 gem 后。在 config/initializers/lograge.rb

创建一个文件
# config/initializers/lograge.rb
Rails.application.configure do
  config.lograge.enabled = true

  config.lograge.custom_options = lambda do |event|
    # custom log on specific domain
    if event.payload[:host] == "debug.example.com"
      {:host => event.payload[:host]}
    else
      {}
    end
  end
end

在你的 Application Controller

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base

  # This will add request's host to lograge so you can use it to filter log later
  def append_info_to_payload(payload)
    super
    payload[:host] = request.host
  end
end

现在您可以根据域自定义您的日志,关于如何自定义请阅读:https://github.com/roidrage/lograge