Module: Fluent::RecordSplitterOutputCore
- Included in:
- RecordSplitterOutput, Plugin::RecordSplitterOutput
- Defined in:
- lib/fluent/plugin/out_record_splitter/core.rb
Class Method Summary collapse
Instance Method Summary collapse
- #configure(conf) ⇒ Object
- #initialize ⇒ Object
- #process(tag, es) ⇒ Object
- #split_lines(message) ⇒ Object
Class Method Details
.included(klass) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fluent/plugin/out_record_splitter/core.rb', line 7 def self.included(klass) klass.config_param :tag, :string, default: nil, desc: 'The output tag name.' klass.config_param :input_key, :string, default: nil, desc: 'The Target key to be splited.' klass.config_param :remove_input_key, :bool, default: false klass.config_param :output_key, :string, default: nil, desc: 'The generateed splitted key.' klass.config_param :split_stratgey, :string, default: 'lines', desc: 'the strategy used to splited the message should be either lines or regex' klass.config_param :append_new_line, :bool, default: false klass.config_param :remove_new_line, :bool, default: false klass.config_param :split_regex, :string, default: '/.+\n/', desc: 'Regex to split lines' klass.config_param :shared_keys, :array, default: [], desc: 'List of keys to be shared between all generated records.' klass.config_param :remove_keys, :array, default: [], desc: 'List of keys to be removed from all generated records.' end |
Instance Method Details
#configure(conf) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/fluent/plugin/out_record_splitter/core.rb', line 20 def configure(conf) super regex = /^\/.+\/$/ if @tag.nil? raise Fluent::ConfigError, "out_record_splitter: `tag` must be specified" end if @input_key.nil? raise Fluent::ConfigError, "out_record_splitter: `input_key` must be specified" end if @output_key.nil? @output_key = @input_key end if !@shared_keys.empty? && !@remove_keys.empty? raise Fluent::ConfigError, 'Cannot set both shared_keys and remove_keys.' end if regex.match(@split_regex.to_s) @split_regex = Regexp.new(@split_regex[1..-2]) end end |
#initialize ⇒ Object
3 4 5 |
# File 'lib/fluent/plugin/out_record_splitter/core.rb', line 3 def initialize super end |
#process(tag, es) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/fluent/plugin/out_record_splitter/core.rb', line 46 def process(tag, es) es.each do |time, record| common_keys = if !@shared_keys.empty? record.select { |key, _value| @shared_keys.include?(key) } elsif !@remove_keys.empty? record.reject { |key, _value| @remove_keys.include?(key) } else record.dup end if @remove_input_key && @output_key != @input_key common_keys.delete(@input_key) end next unless record.key?(@input_key) = record[@input_key] lines = split_lines lines.each do |l| keys = common_keys.merge(@output_key => l) router.emit(@tag, time, keys) end end end |
#split_lines(message) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/fluent/plugin/out_record_splitter/core.rb', line 71 def split_lines() = "#{}\n" if @append_new_line = if @split_stratgey == 'lines' .to_s.lines else .scan(@split_regex) end = .map{|m| m.gsub("\n",'') } if @remove_new_line end |