Sha256: daf860094d5b44832ae5393b7d9016349c0277004f1ae210fc1b93133f26268e

Contents?: true

Size: 1.87 KB

Versions: 3

Compression:

Stored size: 1.87 KB

Contents

module Leap
  require 'logger'

  # Begin logging Leap activity
  #
  # @param [optional] logger An object to receive logging signals (currently <tt>#info</tt>). If not provided, Leap will log to <tt>Logger.new($stdout)</tt>. 
  def log!(logger = nil)
    @@logger = Register.new logger
  end
  module_function :log!

  # Returns the logger object if logging is enabled
  def log?
    defined?(@@logger)
  end
  module_function :log?

  # Returns the logging object--or a "black hole" logger if logging is not enabled.
  def log
   log? ? @@logger : @@shredder ||= Shredder.new 
  end
  module_function :log

  # Facilitates the logging of Leap activity
  class Register
    # Creates a <tt>Leap::Register</tt> wrapper around a given (optional) logger. If no logger is provided, Leap assumes <tt>Logger.new($stdout)</tt>.
    def initialize(logger = nil)
      @logger = logger || ::Logger.new($stdout)
    end

    # Log a Leap decision
    #
    # @param [String] message The message to be logged
    # @param [String] name The name of the decision
    def decision(message, name)
      record name, message, 0
    end

    # Log Leap committee action
    #
    # @param [String] message The message to be logged
    # @param [String] name The name of the committee
    def committee(message, name)
      record name, message, 1
    end

    # Log Leap quorum activity
    #
    # @param [String] message The message to be logged
    # @param [String] name The name of the quorum
    def quorum(message, name)
      record name, message, 2
    end

    private
    
    def record(name, message, indents)
      @logger.info 'Leap ' + (' ' * indents * 2) + " [#{name}] #{message}"  
    end
  end

  # A "black hole" logging class that does absolutely nothing with the logging messages it receives.
  class Shredder
    def decision(*) nil end
    def committee(*) nil end
    def quorum(*) nil end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
leap-0.5.8 lib/leap/register.rb
leap-0.5.7 lib/leap/register.rb
leap-0.5.6 lib/leap/register.rb