Sha256: 73684bd02aa0719d56cc844d4ba52c2fdafe6d9caf17cf372fec3895fb75dd17

Contents?: true

Size: 1.44 KB

Versions: 2

Compression:

Stored size: 1.44 KB

Contents

module Stickler
  #
  # containment for the output that a user should see.  This uses a Logger so
  # that it can be throttled based on level at some point
  #
  class Console
    class << self
      #
      # Items that get logged to stderr for the user to see should use this logger
      #
      def logger
        unless @logger 
          @logger = ::Logging::Logger['User']
          @logger.level = :info
          @logger.add_appenders(::Logging::Appender.stderr)
          ::Logging::Appender.stderr.layout = Logging::Layouts::Pattern.new( :pattern => "%m\n" )
          ::Logging::Appender.stderr.level = :info
        end
        return @logger
      end

      # force initialization 
      Console.logger

      #
      # default logging leve
      #
      def default_level
        :info
      end

      #
      # Quick wrappers around the log levels
      #
      ::Logging::LEVELS.keys.each do |l|
        module_eval <<-code
          def #{ l }( msg )
            @logger.#{l} msg
          end
        code
      end

      #
      # Turn off the logging
      #
      def silent!
        logger.level = :off
      end

      #
      # Resume logging
      #
      def resume!
        logger.level = self.default_level
      end


      #
      # Turn off logging for the execution of a block
      #
      def silent( &block )
        begin
          silent!
          block.call
        ensure
          resume!
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stickler-0.1.0 lib/stickler/console.rb
stickler-0.1.1 lib/stickler/console.rb