class LogStash::Filters::Railsparallelrequest

Public Class Methods

new(config = {}) click to toggle source
Calls superclass method LogStash::Filters::Base::new
# File lib/logstash/filters/railsparallelrequest.rb, line 17
def initialize(config = {})
  super
  @threadsafe = false
  @pending = Hash.new
  @last_event = nil
  @recently_error = nil
  @last_uuid = nil
end

Public Instance Methods

filter(event) { |recently_error| ... } click to toggle source
# File lib/logstash/filters/railsparallelrequest.rb, line 28
def filter(event)
  return unless filter?(event)
  return if event["tags"].include? self.class.config_name

  event["tags"] << self.class.config_name

  line = event["message"]

  if line =~ /^\[(.*?)\]/
    uuid = $1
    event["uuid"] = uuid
    if @recently_error
      if @last_uuid == uuid
        merge_events(@recently_error, event, uuid)
        event.cancel
        return
      else
        @recently_error.uncancel
        yield @recently_error
        @recently_error = nil
      end
    end

    @last_uuid = uuid
    if @pending[uuid]
      merge_events(@pending[uuid], event, uuid)
    else
      @pending[uuid] = event
    end
    @last_event = @pending[uuid]

    if line =~ /Error/
      event.overwrite(@pending[uuid].to_hash)
      @pending.delete uuid
      @recently_error = event
    elsif line =~ /Completed/
      event.overwrite(@pending[uuid])
      @pending.delete uuid
      return
    end
    event.cancel
  elsif @last_event
    @last_event.append(event)
    event.cancel
  end
end
flush() click to toggle source
# File lib/logstash/filters/railsparallelrequest.rb, line 75
def flush
  events = @pending.values.each { |event| event.uncancel }
  @pending.clear
  events
end
register() click to toggle source
# File lib/logstash/filters/railsparallelrequest.rb, line 26
def register ;end

Private Instance Methods

merge_events(dest, source, uuid) click to toggle source
# File lib/logstash/filters/railsparallelrequest.rb, line 82
def merge_events(dest, source, uuid)
  source["message"].gsub!("[#{uuid}]", "")
  dest.append(source)
end