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