Sha256: 30c2e83900f641e4e3cae1d32880b2330c274dc7442b9effdb1e721cb849fd25

Contents?: true

Size: 1.49 KB

Versions: 5

Compression:

Stored size: 1.49 KB

Contents

require 'active_support/notifications'
require 'action_view/log_subscriber'
require 'logstasher/custom_fields'

module LogStasher
  module ActionView
    class LogSubscriber < ::ActionView::LogSubscriber
      include CustomFields::LogSubscriber

      def render_template(event)
        logstash_event(event)
      end
      alias render_partial render_template
      alias render_collection render_template

      def logger
        LogStasher.logger
      end

      private

      def logstash_event(event)
        data = event.payload

        data.merge! event_data(event)
        data.merge! runtimes(event)
        data.merge! extract_data(data)
        data.merge! request_context
        data.merge! LogStasher.store
        data.merge! extract_custom_fields(data)

        tags = []
        tags.push('exception') if data[:exception]
        logger << LogStasher.build_logstash_event(data, tags).to_json + "\n"
      end

      def extract_data(data)
        { identifier: from_rails_root(data[:identifier]) }
      end

      def request_context
        LogStasher.request_context
      end

      def store
        LogStasher.store
      end

      def event_data(event)
        {
          name: event.name,
          transaction_id: event.transaction_id
        }
      end

      def runtimes(event)
        {
          duration: event.duration
        }.each_with_object({}) do |(name, runtime), runtimes|
          runtimes[name] = runtime.to_f.round(2) if runtime
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
logstasher-2.1.1 lib/logstasher/action_view/log_subscriber.rb
logstasher-2.1.0 lib/logstasher/action_view/log_subscriber.rb
logstasher-2.0.2 lib/logstasher/action_view/log_subscriber.rb
logstasher-2.0.1 lib/logstasher/action_view/log_subscriber.rb
logstasher-2.0.0 lib/logstasher/action_view/log_subscriber.rb