class Fluent::Plugin::RecordSplitterOutput

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_record_splitter.rb, line 28
def configure(conf)
  super
  if !@keep_keys.empty? && !@remove_keys.empty?
    raise Fluent::ConfigError, 'Cannot set both keep_keys and remove_keys.'
  end
  if @keep_other_key && !@keep_keys.empty?
    raise Fluent::ConfigError, 'Cannot set keep_keys when keep_other_key is true.'
  end
  if !@keep_other_key && !@remove_keys.empty?
    raise Fluent::ConfigError, 'Cannot set remove_keys when keep_other_key is false.'
  end
end
multi_workers_ready?() click to toggle source
# File lib/fluent/plugin/out_record_splitter.rb, line 24
def multi_workers_ready?
  true
end
process(tag, es) click to toggle source
# File lib/fluent/plugin/out_record_splitter.rb, line 41
def process(tag, es)
  emit_tag = tag.dup

  es.each do |time, record|
    filter_record(emit_tag, time, record)

    if @keep_other_key
      common = record.reject do |key, _value|
        key == @split_key ||
          @remove_keys.include?(key)
      end
    else
      common = record.select { |key, _value| @keep_keys.include?(key) }
    end

    next unless record.key?(@split_key)

    record[@split_key].each do |v|
      v.merge!(common) unless common.empty?
      router.emit(emit_tag, time, v)
    end
  end
end