Sha256: 67811fef348b281448a8b82de246474110bfae499fdeffdc5f6d6166e291e47a
Contents?: true
Size: 1.64 KB
Versions: 1
Compression:
Stored size: 1.64 KB
Contents
require 'fluent/plugin/parser' SubParser = Struct.new(:parser, :index, :name) FORMAT_NAME = "format_name" module Fluent module Plugin class MultiFormatParser < Parser Plugin.register_parser('multi_format', self) config_param :format_key, :string, default: '' config_param :index_key, :string, default: '' def initialize super @parsers = [] @format_key = '' @index_key = '' end def configure(conf) super conf.elements.each_with_index { |e, i| next unless ['pattern', 'format'].include?(e.name) next if e['format'].nil? && (e['@type'] == 'multi_format') parser = SubParser.new format_name = e.delete(FORMAT_NAME) || ""+e['format']+"#"+i.to_s parser.parser = Plugin.new_parser(e['format']) parser.index = i parser.name = format_name parser.parser.configure(e) @parsers << parser } end def parse(text) @parsers.each { |subparser| begin subparser.parser.parse(text) { |time, record| if time && record if ! (@format_key.nil? || @format_key.empty?) record[@format_key] = subparser.name end if ! (@index_key.nil? || @index_key.empty?) record[@index_key] = subparser.index end yield time, record return end } rescue # ignore parser error end } yield nil, nil end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fluent-multi-format-parser-1.1.0 | lib/fluent/plugin/parser_multi_format.rb |