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
我正在寻找一种方法来配置 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