Class: Fluent::Plugin::ArraySplitterFilter

Inherits:
Filter
  • Object
show all
Defined in:
lib/fluent/plugin/filter_array_splitter.rb

Instance Method Summary collapse

Instance Method Details

#configure(conf) ⇒ Object

Raises:

  • (Fluent::ConfigError)


13
14
15
16
17
# File 'lib/fluent/plugin/filter_array_splitter.rb', line 13

def configure(conf)
  super
  raise Fluent::ConfigError, "'array_key' parameter is required" unless conf.has_key?('array_key')
  log.info "Configuring Array Splitter Filter"
end

#filter_stream(tag, es) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/fluent/plugin/filter_array_splitter.rb', line 19

def filter_stream(tag, es)
  new_es = Fluent::MultiEventStream.new
  es.each do |time, record|
    if record[@array_key].is_a?(Array)
      record[@array_key].each do |value|
        new_record = record.dup
        new_record.delete(@array_key)
        if value.is_a?(Hash)
          value.each do |k, v|
            new_record[k] = v
          end
        else
          new_record[@array_key] = value
        end
        new_es.add(time, new_record)
      end
    else
      new_es.add(time, record)
    end
  end
  new_es
end