Sha256: 4c0de977fafa259ab70ac47cd81e44499e3564f8d79fb36d00333a9e6acf2227

Contents?: true

Size: 1.21 KB

Versions: 6

Compression:

Stored size: 1.21 KB

Contents

require_relative 'filter/convert'
require_relative 'filter/gsub'
require_relative 'filter/index'
require_relative 'filter/parse'
require_relative 'filter/scan'
require_relative 'filter/stamp'


module Anschel
  class Filter

    attr_reader :filters

    def initialize config, stats, log
      log.trace event: 'filter', config: config
      config ||= {} # Allow for nil config
      @filters = Hash.new { |h,k| h[k] = [] }
      config.each do |event_type, filter_defns|
        filter_defns.each do |filter_defn|
          filter_type = filter_defn.keys.first
          filter_conf = filter_defn[filter_type]
          @filters[event_type] << self.send(filter_type, filter_conf, log)
        end
      end
      log.info event: 'filter-loaded'
    end


    def apply event
      raise 'Event does not have a "type" field' unless event[:type]
      type = event[:type].dup # In case of modification
      filters[:_before].each { |f| f.call event }
      filters[type].each     { |f| f.call event }
      filters[:_after].each  { |f| f.call event }
      event
    end


  private

    def filtered event, options
      if remove_field = options[:remove_field]
        event.delete remove_field
      end
      event
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
anschel-0.5.0 lib/anschel/filter.rb
anschel-0.4.1 lib/anschel/filter.rb
anschel-0.4.0 lib/anschel/filter.rb
anschel-0.3.2 lib/anschel/filter.rb
anschel-0.3.1 lib/anschel/filter.rb
anschel-0.3.0 lib/anschel/filter.rb