class Fluent::Plugin::ParseRequestBodyExtractor
Attributes
log[R]
Public Class Methods
new(plugin, conf)
click to toggle source
初始化解析器#
# File lib/fluent/plugin/parse_request_body_extractor.rb, line 11 def initialize(plugin, conf) @log = plugin.log if plugin.is_a?(Fluent::Plugin::Output) unless have_tag_option?(plugin) raise Fluent::ConfigError, "out_parse_request_body: At least one of remove_tag_prefix/remove_tag_suffix/add_tag_prefix/add_tag_suffix is required to be set." end end #从配置中读取配置选项# @key = plugin.key @only = plugin.only @except = plugin.except @discard_key = plugin.discard_key @add_field_prefix = plugin.add_field_prefix @permit_blank_key = plugin.permit_blank_key @array_value = plugin.array_value @array_value_key = plugin.array_value_key @replace_key = plugin.replace_key #初始化白名单# if @only @include_keys = @only.split(/\s*,\s*/).inject({}) do |hash, i| hash[i] = true hash end end #初始化黑名单# if @except @exclude_keys = @except.split(/\s*,\s*/).inject({}) do |hash, i| hash[i] = true hash end end #初始化需要被组合的key# if @array_value_key if @array_value @include_array_value = @array_value.split(/\s*,\s*/).inject({}) do |hash, i| hash[i] = true hash end end end end
Public Instance Methods
add_query_params_field(record)
click to toggle source
解析方法#
# File lib/fluent/plugin/parse_request_body_extractor.rb, line 60 def add_query_params_field(record) return record unless record[@key] add_query_params(record[@key], record) replace_record_by_key(record) if @replace_key record.delete(@key) if @discard_key record end
Private Instance Methods
add_field_prefix?()
click to toggle source
# File lib/fluent/plugin/parse_request_body_extractor.rb, line 97 def add_field_prefix? !!@add_field_prefix end
add_query_params(body, record)
click to toggle source
# File lib/fluent/plugin/parse_request_body_extractor.rb, line 105 def add_query_params(body, record) return if body.nil? keyCcount = 0 body.split('&').each do |pair| key, value = pair.split('=', 2).map { |i| CGI.unescape(i) } next if (key.nil? || key.empty?) && (!permit_blank_key? || value.nil? || value.empty?) key ||= '' value ||= '' new_key = create_field_key(key) if @only record[new_key] = value if @include_keys.has_key?(key) elsif @except record[new_key] = value if !@exclude_keys.has_key?(key) else record[new_key] = value end if @include_array_value && @include_array_value.has_key?(key) && (value.to_f != 0) @include_array_value[key] = value.to_f keyCcount += 1 end end if @include_array_value.length == keyCcount record[@array_value_key] = @include_array_value.values end end
create_field_key(field_key)
click to toggle source
# File lib/fluent/plugin/parse_request_body_extractor.rb, line 89 def create_field_key(field_key) if add_field_prefix? "#{@add_field_prefix}#{field_key}" else field_key end end
have_tag_option?(plugin)
click to toggle source
# File lib/fluent/plugin/parse_request_body_extractor.rb, line 82 def have_tag_option?(plugin) plugin.remove_tag_prefix || plugin.remove_tag_suffix || plugin.add_tag_prefix || plugin.add_tag_suffix end
permit_blank_key?()
click to toggle source
# File lib/fluent/plugin/parse_request_body_extractor.rb, line 101 def permit_blank_key? @permit_blank_key end
replace_record_by_key(record)
click to toggle source
替换record中某一个键值#
# File lib/fluent/plugin/parse_request_body_extractor.rb, line 71 def replace_record_by_key(record) return record unless record[@replace_key] replace_value = record[@array_value_key] if replace_value empty_value = replace_value.select {|item| item == 0 } if (empty_value.size != replace_value.size) record[@replace_key] = replace_value end end end