我正在尝试使用 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 方法的响应参数?