Class: Fluent::TextParser::KVParser

Inherits:
Parser
  • Object
show all
Includes:
Configurable, TypeConverter
Defined in:
lib/fluent/plugin/parser_kv.rb

Instance Method Summary collapse

Instance Method Details

#configure(conf = {}) ⇒ Object



11
12
13
14
15
16
# File 'lib/fluent/plugin/parser_kv.rb', line 11

def configure(conf={})
  super
  if @kv_delimiter[0] == '/' and @kv_delimiter[-1] == '/'
    @kv_delimiter = Regexp.new(@kv_delimiter[1..-2])
  end
end

#parse(text) {|time, record| ... } ⇒ Object

Yields:

  • (time, record)


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

def parse(text)
  record = {}
  text.split(@kv_delimiter).each do |kv|
    k, v = kv.split(@kv_char, 2)
    record[k] = v
  end

  convert_field_type!(record) if @type_converters
  time = record.delete(@time_key)
  if time.nil?
    time = Engine.now
  elsif time.respond_to?(:to_i)
    time = time.to_i
  else
    raise RuntimeError, "The #{@time_key}=#{time} is a bad time field"
  end

  yield time, record
end