Sha256: 6be7f82c1f9bef6607c84799291e9bf698e9893de0ccf660365df4ce7acebe38

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

require 'fluent/parser'

module Fluent
  class TextParser
    class MultiFormatParser
      include Configurable

      def initialize
        super

        @parsers = []
      end

      def configure(conf)
        super

        conf.elements.each { |e|
          next unless ['pattern', 'format'].include?(e.name)

          parser = TextParser.new
          parser.configure(e)
          @parsers << parser.parser
        }
      end

      def call(text)
        @parsers.each { |parser|
          begin
            parser.call(text) { |time, record|
              if time && record
                if block_given?
                  yield time, record
                  return
                else
                  return time, record
                end
              end
            }
          rescue # ignore parser error
          end
        }

        if block_given?
          yield nil, nil
        else
          return nil, nil
        end
      end
    end

    register_template('multi_format', Proc.new { MultiFormatParser.new })
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-multi-format-parser-0.0.1 lib/fluent/plugin/parser_multi_format.rb