Sha256: 903bb627546ff498ce59ec4317b4c1f6171400fa1c641ff2455b29e6e0732832

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

require 'fluent/filter'
require 'fluent/parser'

module Fluent
  class EmptyKeysFilter < Filter
    Fluent::Plugin.register_filter('empty_keys', self)

    config_param :empty_keys, :string, default: nil
    config_param :keys_delimiter, :string, default: ','
    config_param :values_delimiter, :string, default: ':'

    def configure(conf)
        super

        @keys_empty_values = nil
        @keys_empty_values = parse_empty_values_parameter unless @empty_keys.nil?
    end

    def filter(tag, time, record)
      record.reject{ |k,v| (v.nil? || v.to_s.empty? || (!@keys_empty_values.nil? && v.to_s.eql?(@keys_empty_values[k]))) }
    end

    private

    def parse_empty_values_parameter
      keys_empty_values = {}

      @empty_keys.split(@keys_delimiter).each do |pattern_name|
        key, empty_value, format = pattern_name.split(@values_delimiter, 3)
        raise ConfigError, "EmptyValue is needed" if empty_value.nil?
        keys_empty_values[key] = empty_value
      end

      keys_empty_values
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-filter_empty_keys-0.0.3 lib/fluent/plugin/filter_empty_keys.rb