class Fluent::SplitRecordFilter
Public Instance Methods
configure(conf)
click to toggle source
Configuration
Calls superclass method
# File lib/fluent/plugin/filter_split_record.rb, line 26 def configure(conf) super @format_regex = Regexp.new(@format) @format_regex_substring = Regexp.new(@substring_format) unless @format_regex.names.include?("key") and @format_regex.names.include?("value") raise ConfigError, "split_record: format must have named_captures of key and value" end if (!keys_prefix.nil? && keys_prefix.is_a?(String)) @store_fun = method(:store_with_prefix) else @store_fun = method(:store) end end
filter(tag, time, record)
click to toggle source
# File lib/fluent/plugin/filter_split_record.rb, line 49 def filter(tag, time, record) record end
filter_stream(tag, es)
click to toggle source
# File lib/fluent/plugin/filter_split_record.rb, line 53 def filter_stream(tag, es) mes = MultiEventStream.new es.each { |time, record| begin msg = record[@key_name] record.delete(@key_name) unless @reserve_msg data = split_message(msg) if @out_key.nil? record.merge!(data) else record[@out_key] = data end mes.add(time, record) rescue => e router.emit_error_event(tag, time, record, e) end } mes end
shutdown()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/filter_split_record.rb, line 45 def shutdown super end
Private Instance Methods
split_message(message)
click to toggle source
Message splitter
# File lib/fluent/plugin/filter_split_record.rb, line 77 def split_message(message) return {} unless message.is_a?(String) # Convert key-pairs as found if @format_regex_substring.nil? key_values = message.scan @format_regex # Pop off substrings; get their key-pairs; then scan the leftovers else key_values = message.scan @format_regex_substring leftovers = message.gsub(@format_regex_substring,'').scan(@format_regex) leftovers.each { |e| key_values << e } end # Store key pairs data = {} key_values.each { |e| @store_fun.call(data,e[0],e[1]) } data end
store(data, key, value)
click to toggle source
Store key/value pair
# File lib/fluent/plugin/filter_split_record.rb, line 95 def store(data, key, value) data.store(key, value) end
store_with_prefix(data, key, value)
click to toggle source
Store key/value pair, with prefix
# File lib/fluent/plugin/filter_split_record.rb, line 100 def store_with_prefix(data, key, value) data.store(@keys_prefix+key, value) end