class Fluent::ParserOutput
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_ltsv_parser.rb, line 13 def initialize super require 'time' end
Public Instance Methods
configure(conf)
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_ltsv_parser.rb, line 23 def configure(conf) super if @key_name[0] == ":" @key_name = @key_name[1..-1].to_sym end @filter_in = @filter_in.split(",").map(&:strip).select{ |e| e != "" } @required_fields = @required_fields.split(",").map(&:strip).select{ |e| e != "" } if @transform_values then @transform_values = Hash[@transform_values.split(",").map{|p| p.split(":",2)}] end end
emit(tag,es,chain)
click to toggle source
# File lib/fluent/plugin/out_ltsv_parser.rb, line 40 def emit(tag,es,chain) tag = @tag || tag if @add_prefix tag = @add_prefix + "." + tag end es.each do |time,record| raw_value = record[@key_name] values = raw_value ? transform_values(filter(parse(raw_value))) : nil r = @reserve_data ? record.merge(values) : values if r Fluent::Engine.emit(tag,time,r) end end chain.next end
Private Instance Methods
filter(record)
click to toggle source
# File lib/fluent/plugin/out_ltsv_parser.rb, line 60 def filter(record) if @required_fields.length > 0 then if record.count { |k,v| @required_fields.include? k } != @required_fields.length then return nil end end if @filter_in.length <= 0 then return record end _record = record.select{ |x| @filter_in.include? x } if not @min_field.nil? then if _record.keys.length >= @min_field then return _record else #log.debug("#{record} has an missing fields") return nil end end return _record end
parse(text)
click to toggle source
# File lib/fluent/plugin/out_ltsv_parser.rb, line 97 def parse(text) return Hash[text.split("\t").map{|p| p.split(":", 2)}] end
transform_values(record)
click to toggle source
# File lib/fluent/plugin/out_ltsv_parser.rb, line 85 def transform_values(record) return record if record.nil? return record if @transform_values.nil? @transform_values.each do |key,value| field_name,field_value = key.split("=") next if record[field_name].nil? or field_name.nil? or field_value.nil? record[field_name] = value if field_value == record[field_name] end return record end