require 'fluent/plugin/parser'
module Fluent::Plugin
class TKGIMetadataParser < Parser
# Register this parser as 'tkgi_metadata'
Fluent::Plugin.register_parser('tkgi_metadata', self)
# `delimiter` is configurable with ' ' as default
config_param :delimiter, :string, default: ' '
# `time_format` is configurable
config_param :time_format, :string, default: nil
def configure(conf)
super
if @delimiter.length != 1
raise ConfigError, "delimiter must be a single character. #{@delimiter} is not."
end
end
def parse(text)
source, key_values = text.split(' ', 2)
source.gsub!(/[\[!@%&"0-9]/,'')
record = {}
key_values.gsub!(/[\]]/,'')
key_values.split(@delimiter).each do |kv|
k, v = kv.split('=', 2)
record[k] = v
end
record.merge!(source: source)
yield source, record
end
end
end