class Fluent::Plugin::QueryStringParserFilter
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/filter_query_string_parser.rb, line 14 def initialize super require "uri" end
Public Instance Methods
filter(tag, time, record)
click to toggle source
# File lib/fluent/plugin/filter_query_string_parser.rb, line 19 def filter(tag, time, record) raw_value = record[@key_name] if raw_value.nil? if @emit_invalid_record_to_error router.emit_error_event(tag, time, record, ArgumentError.new("#{@key_name} does not exist")) end return @ignore_key_not_exist ? nil : record end begin params = URI.decode_www_form(raw_value) unless params.empty? if @multi_value_params values = Hash.new {|h,k| h[k] = [] } params.each{|pair| values[pair[0]].push(pair[1])} else values = Hash[params] end if @inject_key_prefix values = Hash[values.map{|k,v| [ @inject_key_prefix + k, v ]}] end r = @hash_value_field ? { @hash_value_field => values } : values record = record.merge(r) end rescue => e log.warn "parse failed #{e.message}" unless @suppress_parse_error_log end return record end