class Fluent::TailMultilineInput_EX::MultilineTextParser_EX

Public Instance Methods

configure(conf, required=true) click to toggle source
# File lib/fluent/plugin/in_tail_multiline_ex.rb, line 8
def configure(conf, required=true)
  format = conf['format']
  if format == nil
    raise ConfigError, "'format' parameter is required"
  elsif format[0] != ?/ || format[format.length-1] != ?/ 
    raise ConfigError, "'format' should be RegEx. Template is not supported in multiline mode"
  end

  begin
    @regex = Regexp.new(format[1..-2],Regexp::MULTILINE)
    if @regex.named_captures.empty?
      raise "No named captures"
    end
  rescue
    raise ConfigError, "Invalid regexp in format '#{format[1..-2]}': #{$!}"
  end

  @parser = RegexpParser.new(@regex, conf)

  format_firstline = conf['format_firstline']
  if format_firstline
    # Use custom matcher for 1st line
    if format_firstline[0] == '/' && format_firstline[format_firstline.length-1] == '/'
      @regex = Regexp.new(format_firstline[1..-2])
    else
      raise ConfigError, "Invalid regexp in format_firstline '#{format_firstline[1..-2]}': #{$!}"
    end
  end

  return true
end
match_firstline(text) click to toggle source
# File lib/fluent/plugin/in_tail_multiline_ex.rb, line 40
def match_firstline(text)
  @regex.match(text)
end