Sha256: 1a5a7b3e783f6f595b4ff7a481605baf761e1c1fe570bd6ca9489ef1551b3a11

Contents?: true

Size: 1023 Bytes

Versions: 4

Compression:

Stored size: 1023 Bytes

Contents

# {
#   "parse": {
#     "field": "message",
#     "pattern": "()"
#   }
# }
module Anschel
  class Filter
    def parse conf, log
      field   = conf.delete :field
      pattern = Regexp.new conf.delete(:pattern)

      raise 'Missing required "field" for "parse" filter' if field.nil?
      raise 'Missing required "pattern" for "parse" filter' if pattern.nil?

      field = field.to_sym


      log.trace event: 'filter-compiled', kind: 'parse', \
        field: field, pattern: pattern

      lambda do |event|
        return event unless event.has_key? field
        mdata = pattern.match event[field]
        if mdata.nil?
          log.error \
            event: 'parse-filter-error',
            reason: 'regexp did not match',
            field: field,
            pattern: pattern,
            raw_event: event
          return filtered(event, conf)
        end
        mdata.names.each do |group|
          event[group.to_sym] = mdata[group]
        end
        filtered event, conf
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
anschel-0.6.5 lib/anschel/filter/parse.rb
anschel-0.6.4 lib/anschel/filter/parse.rb
anschel-0.6.3 lib/anschel/filter/parse.rb
anschel-0.6.2 lib/anschel/filter/parse.rb