1

我正在尝试使用 Logstasher gem 记录其他自定义字段。

我需要记录一些响应参数,但是logstasher不支持自己使用配置记录响应参数,因此我将代码放入ApplicationController的after_action方法中。

应用控制器

  after_action :set_logstasher_params

  def set_logstasher_params
    if LogStasher.enabled?
      res_params = JSON.parse(response.body.as_json)
      LogStasher.add_custom_fields do |fields|
        fields[:res_params] = res_params
      end
    end
  end

这是 logstasher 初始化程序

初始化程序/logstasher.rb

if LogStasher.enabled?
  LogStasher.add_custom_fields do |fields|
    fields[:request_params] = request.filtered_parameters
    LogStasher::CustomFields.add(:myapi_runtime)
  end

  LogStasher.add_custom_fields_to_request_context do |fields|    
    fields[:request_params] = request.filtered_parameters
  end
end

问题是下一个: 启动rails服务器后,我发送的第一个请求,只记录logstasher.rb中指示的参数,除了在ApplicationController中添加的参数。

但在那之后,每个请求都会记录所有指示 logstasher.rb 以及 ApplicationController 方法的内容。

有谁知道为什么第一次不记录 ApplicationController 方法的响应参数?

4

0 回答 0