Class: LogStash::Filters::Memorize

Inherits:
Base
  • Object
show all
Defined in:
lib/logstash/filters/memorize.rb

Overview

to use if the field isn’t present and has no memorized value (optional)

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Memorize

Returns a new instance of Memorize.



40
41
42
43
44
45
46
47
# File 'lib/logstash/filters/memorize.rb', line 40

def initialize(config = {})
  super

  @threadsafe = false

  # This filter needs to keep state.
  @memorized = Hash.new
end

Instance Method Details

#filter(event) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/logstash/filters/memorize.rb', line 55

def filter(event)
  return unless filter?(event)

  any = false
  key = event.sprintf(@stream_identity)
  @fields.each do |field|
    if event.get(field).nil?
      map = @memorized[key]
      val = map.nil? ? nil : map[field]
      if val.nil?
        val = @default.nil? ? nil : @default[field]
      else
        event.set(field, val)
        any = true
      end
    else
      map = @memorized[key]
      if map.nil?
        map = @memorized[key] = Hash.new
      end
      map[field] = event.get(field)
    end #if
    if any
      filter_matched(event)
    end
  end #field.each
end

#registerObject



50
51
52
# File 'lib/logstash/filters/memorize.rb', line 50

def register
# nothing needed
end