Skip to content

Logstasher custom fields in ApplicationController #150

@twinster

Description

@twinster

I am trying to log additional custom fields using Logstasher gem.

I need to log some response parameters, but logstasher does not support itself logging response params using configuration, therefore I put the code into after_action method in ApplicationController.

ApplicationController

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

This is logstasher initializer

initializer/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

The problem is next: After starting rails server, first request I send, logs only parameters which are indicated in logstasher.rb except parameters added in ApplicationController.

But After that every request logs everything indicated logstasher.rb as well as ApplicationController method.

Just First request does not log response parameters from ApplicationController method.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions