class Fluent::EvalFilterOutput
Public Instance Methods
configure(conf)
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_eval_filter.rb, line 12 def configure(conf) super if @requires @requires.split(',').each do |lib| begin require lib rescue Exception => e raise Fluent::ConfigError, "\n#{e.message}\n#{e.backtrace.join("\n")}" end end end if remove_tag_prefix = conf['remove_tag_prefix'] @remove_tag_prefix = /^#{Regexp.escape(remove_tag_prefix)}\.*/ end if remove_tag_suffix = conf['remove_tag_suffix'] @remove_tag_suffix = /\.*#{Regexp.escape(remove_tag_suffix)}$/ end @add_tag_prefix = conf['add_tag_prefix'] @add_tag_suffix = conf['add_tag_suffix'] conf.keys.select { |key| key =~ /^config\d+$/ }.sort_by { |key| key.sub('config', '').to_i }.each do |key| begin instance_eval("#{conf[key]}") rescue Exception => e raise Fluent::ConfigError, "#{key} #{conf[key]}\n" + e.to_s end end @filters = [] conf.keys.select { |key| key =~ /^filter\d+$/ }.sort_by { |key| key.sub('filter', '').to_i }.each do |key| begin @filters << instance_eval("lambda do |tag, time, record| #{conf[key]} end") rescue Exception => e raise Fluent::ConfigError, "#{key} #{conf[key]}\n" + e.to_s end end if @filters.empty? raise Fluent::ConfigError, "missing filters" end end
create_result(tag, time, record, result)
click to toggle source
# File lib/fluent/plugin/out_eval_filter.rb, line 91 def create_result(tag, time, record, result) result = [result] unless result.is_a?(Array) result.each do |value| tag = value if value.is_a?(String) time = value if value.is_a?(Integer) record = value if value.is_a?(Hash) end [tag, time, record] end
emit(tag, es, chain)
click to toggle source
# File lib/fluent/plugin/out_eval_filter.rb, line 56 def emit(tag, es, chain) tag = handle_tag(tag) es.each do |time, record| results = filter_record(tag, time, record) if results results.each do |result| router.emit(*result) end end end chain.next end
filter_record(tag, time, record)
click to toggle source
# File lib/fluent/plugin/out_eval_filter.rb, line 77 def filter_record(tag, time, record) @filters.each do |filter| results = [] filter_results = filter.call(tag, time, record) filter_results = [filter_results] unless filter_results.instance_of?(Enumerator) filter_results.each do |filter_result| result = create_result(tag, time, record, filter_result) if filter_result results << result if result end return results unless results.empty? end nil end
handle_tag(tag)
click to toggle source
# File lib/fluent/plugin/out_eval_filter.rb, line 69 def handle_tag(tag) tag = tag.sub(@remove_tag_prefix, '') if @remove_tag_prefix tag = tag.sub(@remove_tag_suffix, '') if @remove_tag_suffix tag = tag.sub(/^\.*/, "#{@add_tag_prefix}.") if @add_tag_prefix tag = tag.sub(/\.*$/, ".#{@add_tag_suffix}") if @add_tag_suffix tag end