Sha256: 861616776a091e331e2777be72618905c154aad90fb7d5f331f9f7f5b0e7ddae

Contents?: true

Size: 932 Bytes

Versions: 1

Compression:

Stored size: 932 Bytes

Contents

module Yarder

  # Basically a wrapper for a LogStash event that keeps track of if it was created from a rack
  # middle-ware or not. This is important when it comes to deciding when to write the log
  class Event
    extend Forwardable
    def_delegators :@logstash_event, :[]=, :[], :to_json

    def initialize(logger, rack = false)
      @logger = logger
      @rack = rack
      @logstash_event = LogStash::Event.new

      self['type'] = logger.log_type
      self['tags'] ||= []
      self.fields['duration'] = {}
      self.fields['env'] = logger.env
    end

    def write(rack = false)
      if @rack
        @logger.info self if rack
      else
        @logger.info self
      end
    end

    def self.create(logger, tags, rack = false)
      logger.push_request_tags(tags) if tags
      new(logger, rack)
    end

    def fields
      @fields ||= (@logstash_event[@logger.log_namespace.to_s] ||= {})
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
yarder-0.1.0 lib/yarder/event.rb