diff --git a/lib/fluent/plugin/filter_record_modifier.rb b/lib/fluent/plugin/filter_record_modifier.rb index 020a3c2..2d7ccb4 100644 --- a/lib/fluent/plugin/filter_record_modifier.rb +++ b/lib/fluent/plugin/filter_record_modifier.rb @@ -12,6 +12,12 @@ class RecordModifierFilter < Filter In more detail, please refer this section: https://github.com/repeatedly/fluent-plugin-record-modifier#char_encoding. DESC + + config_param :replace_keys, :bool, default: true, + desc: <<-DESC +Whether to replace a key or not if already in the record. +DESC + config_param :remove_keys, :string, default: nil, desc: <<-DESC The logs include needless record keys in some cases. @@ -26,7 +32,7 @@ class RecordModifierFilter < Filter This option is exclusive with `remove_keys`. DESC - BUILTIN_CONFIGURATIONS = %W(type @type log_level @log_level id @id char_encoding remove_keys whitelist_keys) + BUILTIN_CONFIGURATIONS = %W(type @type log_level @log_level id @id char_encoding replace_keys remove_keys whitelist_keys) def configure(conf) super @@ -89,7 +95,9 @@ def filter_stream(tag, es) es.each { |time, record| @map.each_pair { |k, v| - record[k] = v.expand(tag, time, record, tag_parts) + if @replace_keys || !record.has_key?(k) + record[k] = v.expand(tag, time, record, tag_parts) + end } if @remove_keys