Sha256: 9742eee63cde1d620e5ee35620e14772e7be3a86dbd8cbb738dad7293f30f5d5

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

# -*- encoding : utf-8 -*-
module Fluent
  class SplitOutput < Output
    Fluent::Plugin.register_output('split', self)

    def initialize
      super
    end

    config_param :output_tag, :string
    config_param :output_key, :string
    config_param :format, :string, :default => "csv"
    config_param :key_name, :string
    config_param :keep_keys, :string, :default => ""

    def configure(conf)
      super
      @keep_keys_array = @keep_keys.split(",")
      if @format == "csv"
        @separator = ','
      elsif @format == "tsv"
        @separator = '\t'
      elsif @format == "space"
        @separator = /[\s ]/
      else
        @separator = @format
      end
    end

    def emit(tag, es, chain)
      es.each { |time, record|
        next if record[@key_name].nil?
        record[@key_name].split(@separator).each{|item|
          result = {@output_key => item}
          record.each {|key,value|
            result[key] = value if @keep_keys_array.include?(key)
          }
          Engine.emit(output_tag, time, result)
        }
      }
      chain.next
    rescue => e
      $log.warn e.message
      $log.warn e.backtrace.join(', ')
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-split-0.0.3 lib/fluent/plugin/out_split.rb