class Fluent::OutputFieldMultiRegex

Public Instance Methods

emit(tag, es, chain) click to toggle source
# File lib/fluent/plugin/out_field_multiregex.rb, line 39
def emit(tag, es, chain)
  tag = update_tag(tag)
  es.each { |time, record|
    Engine.emit(tag, time, parse_field(record))
  }
  chain.next
end
parse_field(record) click to toggle source
# File lib/fluent/plugin/out_field_multiregex.rb, line 61
def parse_field(record)
  if (parse_key.nil?) || !(record.key?(parse_key))
    return record
  end
  source = record[parse_key].to_s
  
  source_arr = []
  if !(multiline == false)
    source_arr = source.split( /\r?\n/ )
  else
    source_arr << source
  end

  input_patterns = [pattern1,pattern2,pattern3,pattern4,
    pattern5,pattern6,pattern7,pattern8,
    pattern9,pattern10,pattern11,pattern12,
    pattern13,pattern14,pattern15,pattern16,
    pattern17,pattern18,pattern19,pattern20          
    ]
  matched = false
  input_patterns.each do |input_pattern|
    if !(input_pattern.nil?)
      source_arr.each do |source_elem|
        matched = false
        matched_hash = source_elem.match(input_pattern)
        if !(matched_hash.nil?)
          matched_hash.names.each do |key|
            val = matched_hash[key]
            if val.is_i?
              record[key] = val.to_i
            elsif val.nan?
              record[key] = val
            else
              record[key] = val.to_f
            end
          end
          matched = true
        end
      end 
    end
    if matched
      break
    end
  end
  return record
end
update_tag(tag) click to toggle source
# File lib/fluent/plugin/out_field_multiregex.rb, line 47
def update_tag(tag)
  if remove_tag_prefix
    if remove_tag_prefix == tag
      tag = ''
    elsif tag.to_s.start_with?(remove_tag_prefix+'.')
      tag = tag[remove_tag_prefix.length+1 .. -1]
    end
  end
  if add_tag_prefix
    tag = tag && tag.length > 0 ? "#{add_tag_prefix}.#{tag}" : add_tag_prefix
  end
  return tag
end