Sha256: 1af3fdf35e7a4aaebb63ecd0381f3343a1ee97f641fd88b229b6f789427e68d7

Contents?: true

Size: 918 Bytes

Versions: 3

Compression:

Stored size: 918 Bytes

Contents

module Bio
  module Log

    # The filter logger changes behaviour
    module LoggerFilter

      def filter &filter_func
        @use_filter = filter_func
        @outputters.each do | out | 
          # p [:adding_filter_to,out]
          out.class.send(:define_method, :filtered?) do |l,s,m|
            # p [:called,l,s,m]
            filter_func.call(l,s,m)
          end
          raise 'hell' if !out.class.method_defined?(:filtered?)
        end
        @level = default_level  # will recreate logger methods
        @sub_level = default_sub_level
      end

      def reset_filter
        @use_filter = nil
        @outputters.each do | out | 
          if out.class.method_defined?(:filtered?)
            out.class.send(:remove_method, :filtered?)
          end
        end
        @level = default_level  # will recreate logger methods
        @sub_level = default_sub_level
      end

    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bio-logger-1.0.1 lib/bio/log/loggerfilter.rb
bio-logger-1.0.0 lib/bio/log/loggerfilter.rb
bio-logger-0.9.0 lib/bio/log/loggerfilter.rb