Sha256: 6c70fddfacce660d3acfb73de5bbf354e2a2c0fe5aa015c3f4f7f7f8f58ef855

Contents?: true

Size: 1.63 KB

Versions: 6

Compression:

Stored size: 1.63 KB

Contents

module LogStasher
  module ActionController
    module Instrumentation
      def process_action(*args)
        add_custom_fields_to_store
        LogStasher.clear_request_context
        LogStasher.add_default_fields_to_request_context(request)

        super(*args)
        LogStasher::CustomFields.clear
      end
      
      private

      # this method is called from within super of process_action.
      def append_info_to_payload(payload) #:nodoc:
        LogStasher.add_default_fields_to_payload(payload, request)
        if self.respond_to?(:logstasher_add_custom_fields_to_request_context)
          logstasher_add_custom_fields_to_request_context(LogStasher.request_context)
        end

        if self.respond_to?(:logstasher_add_custom_fields_to_payload)
          before_keys = payload.keys.clone
          logstasher_add_custom_fields_to_payload(payload)
          after_keys = payload.keys
          # Store all extra keys added to payload hash in payload itself. This is a thread safe way
          LogStasher::CustomFields.add(*(after_keys - before_keys))
        end

        payload[:status] = response.status
        super(payload)

        LogStasher.store.each do |key, value|
          payload[key] = value
        end

        LogStasher.request_context.each do |key, value|
          payload[key] = value
        end
      end
      
      def add_custom_fields_to_store
        LogStasher.store[:ip] = request.remote_ip
        LogStasher.store[:route] = "#{request.params[:controller]}##{request.params[:action]}"
        LogStasher.request_context[:request_id] = request.env['action_dispatch.request_id']
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
logstasher-1.4.0 lib/logstasher/rails_ext/action_controller/base.rb
logstasher-1.3.0 lib/logstasher/rails_ext/action_controller/base.rb
logstasher-1.2.2 lib/logstasher/rails_ext/action_controller/base.rb
logstasher-1.2.1 lib/logstasher/rails_ext/action_controller/base.rb
logstasher-1.2.0 lib/logstasher/rails_ext/action_controller/base.rb
logstasher-1.1.1 lib/logstasher/rails_ext/action_controller/base.rb