Sha256: 062aeff90fe81366754377cf77ee70f033c45718b43538e70b08287a4facea51

Contents?: true

Size: 854 Bytes

Versions: 2

Compression:

Stored size: 854 Bytes

Contents

require 'logger'

module Logster
  class Logger < ::Logger
    attr_accessor :store

    def initialize(store)
      super(nil)
      @store = store
    end

    def chain(logger)
      @chained ||= []
      @chained << logger
    end

    def add(severity, message, progname, &block)
      if severity < @level
        return true
      end

      if @chained
        i = 0
        # micro optimise for logging
        while i < @chained.length
          # TODO double yielding blocks
          @chained[i].add(severity, message, progname, &block)
          i += 1
        end
      end

      progname ||= @progname
      if message.nil?
        if block_given?
          message = yield
        else
          message = progname
          progname = @progname
        end
      end

      @store.report(severity, progname, message)

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
logster-0.0.4 lib/logster/logger.rb
logster-0.0.3 lib/logster/logger.rb