【问题标题】:Rails - conditionally log for a specific hostnameRails - 有条件地记录特定主机名
【发布时间】:2016-02-22 01:11:36
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails logging conditional production-environment


    【解决方案1】:

    您可以使用 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

    【讨论】:

    • 非常酷。我已经在某些环境中使用了 Lograge ...没有意识到它使定制变得更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多