class Fluent::KeyValueParser
Public Instance Methods
configure(conf)
click to toggle source
Calls superclass method
# File lib/fluent/plugin/filter_key_value_parser.rb, line 20 def configure(conf) super regex = /^\/.+\/$/ if regex.match(@keys_delimiter.to_s) @keys_delimiter = Regexp.new(@keys_delimiter[1..-2]) end if regex.match(@remove_prefix.to_s) @remove_prefix = Regexp.new(@remove_prefix[1..-2]) end if regex.match(@filtered_keys_regex.to_s) @filtered_keys_regex = Regexp.new(@filtered_keys_regex[1..-2]) end @filtered_keys_list = parse_filtered_keys_parameter end
filter(tag, time, record)
click to toggle source
# File lib/fluent/plugin/filter_key_value_parser.rb, line 40 def filter(tag, time, record) return if record[@key].nil? keys = extracted_keys(extract_log_line(record[@key])) return if @filter_out_lines_without_keys && keys.empty? record.merge! keys record.tap { |r| r.delete(@key) if @remove_key }.compact end
Private Instance Methods
delimiter_filter(line)
click to toggle source
# File lib/fluent/plugin/filter_key_value_parser.rb, line 63 def delimiter_filter(line) items = {} line.split(@keys_delimiter).each do |kv| key, value = kv.split(@kv_delimiter_char, 2) items[key] = value if value end items end
extract_log_line(line)
click to toggle source
# File lib/fluent/plugin/filter_key_value_parser.rb, line 76 def extract_log_line(line) line.gsub(@remove_prefix,'').strip end
extracted_keys(line)
click to toggle source
# File lib/fluent/plugin/filter_key_value_parser.rb, line 57 def extracted_keys(line) keys = @use_regex ? regex_filter(line) : delimiter_filter(line) filtered_keys = @filtered_keys_list.empty? ? keys : keys.slice(*@filtered_keys_list) @filtered_keys_regex.nil? ? filtered_keys : filtered_keys.merge(keys.select{ |k,v| @filtered_keys_regex.match(k.to_s)}) end
parse_filtered_keys_parameter()
click to toggle source
# File lib/fluent/plugin/filter_key_value_parser.rb, line 72 def parse_filtered_keys_parameter @filtered_keys.to_s.split(@filtered_keys_delimiter) end
regex_filter(line)
click to toggle source
# File lib/fluent/plugin/filter_key_value_parser.rb, line 53 def regex_filter(line) "#{line} ".scan(/(?<key>[a-zA-Z_0-9]+)=(?<value>([^=]+|[^ ]+))\s/).to_h end