Module: Fluent::Plugin::RenameKeyUtil
- Included in:
- RenameKeyFilter, RenameKeyOutput
- Defined in:
- lib/fluent/plugin/rename_key_util.rb
Constant Summary collapse
- CONF_RENAME =
'rename_rule'
- CONF_REPLACE =
'replace_rule'
Instance Method Summary collapse
- #create_rename_rules(conf) ⇒ Object
- #create_replace_rules(conf) ⇒ Object
- #rename_key(record) ⇒ Object
- #replace_key(record) ⇒ Object
Instance Method Details
#create_rename_rules(conf) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/fluent/plugin/rename_key_util.rb', line 6 def create_rename_rules(conf) @rename_rules = [] rule_keys = conf.keys.select { |k| k.strip.start_with? CONF_RENAME }. sort_by { |k| k.sub(CONF_RENAME, '').to_i } rule_keys.each do |rule_key| rule = parse_rename_rule conf[rule_key] if @rename_rules.any? { |existing_rule| existing_rule[:key_regexp] == rule[:key_regexp] } raise Fluent::ConfigError, "Duplicated rules for key #{rule[:key_regexp].source}: #{@rename_rules}" end @rename_rules << rule log.info "Added rename key rule: #{rule_key} #{@rename_rules.last}" end end |
#create_replace_rules(conf) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/fluent/plugin/rename_key_util.rb', line 23 def create_replace_rules(conf) @replace_rules = [] rule_keys = conf.keys.select { |k| k.strip.start_with? CONF_REPLACE }. sort_by { |k| k.sub(CONF_REPLACE, '').to_i } rule_keys.each do |rule_key| rule = parse_replace_rule conf[rule_key] if @replace_rules.any? { |existing_rule| existing_rule[:key_regexp] == rule[:key_regexp] } raise Fluent::ConfigError, "Duplicated rules for key #{rule[:key_regexp].source}: #{@replace_rules}" end @replace_rules << rule log.info "Added replace key rule: #{rule_key} #{@replace_rules.last}" end end |
#rename_key(record) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/fluent/plugin/rename_key_util.rb', line 40 def rename_key record new_record = {} record.each do |key, value| @rename_rules.each do |rule| match_data = key.match rule[:key_regexp] next unless match_data # next rule placeholder = get_placeholder match_data key = rule[:new_key].gsub /\${md\[\d+\]}/, placeholder break end if @deep_rename if value.is_a? Hash value = rename_key value elsif value.is_a? Array value = value.map { |v| v.is_a?(Hash) ? rename_key(v) : v } end end new_record[key] = value end new_record end |
#replace_key(record) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/fluent/plugin/rename_key_util.rb', line 68 def replace_key record new_record = {} record.each do |key, value| @replace_rules.each do |rule| match_data = key.match rule[:key_regexp] next unless match_data # next rule placeholder = get_placeholder match_data key = key.gsub rule[:key_regexp], rule[:replacement].gsub(/\${md\[\d+\]}/, placeholder) break end if @deep_rename if value.is_a? Hash value = replace_key value elsif value.is_a? Array value = value.map { |v| v.is_a?(Hash) ? replace_key(v) : v } end end new_record[key] = value end new_record end |