Sha256: 97b904994b37003174be40b87506077e9624a6b6d26b45e0d14568c5a257eb1f

Contents?: true

Size: 1.21 KB

Versions: 5

Compression:

Stored size: 1.21 KB

Contents

require 'logger'

module Low
  # `Low::ScopedLogger` is a tiny wrapper around `Logger`. It allows
  # `scope` to be specified, making it easy to grep any messages generated
  # by a particular instance.
  class ScopedLogger
    attr_accessor :scope

    def initialize(io = $stdout)
      @logger = ::Logger.new(io)
    end

    def level=(level)
      @logger.level = level
    end

    def level
      @logger.level
    end

    def fatal(message = nil, progname = nil, &block)
      add ::Logger::FATAL, message, progname, &block
    end

    def error(message = nil, progname = nil, &block)
      add ::Logger::ERROR, message, progname, &block
    end

    def warn(message = nil, progname = nil, &block)
      add ::Logger::WARN, message, progname, &block
    end

    def info(message = nil, progname = nil, &block)
      add ::Logger::INFO, message, progname, &block
    end

    def debug(message = nil, progname = nil, &block)
      add ::Logger::DEBUG, message, progname, &block
    end

    def add(level, message = nil, progname = nil, &block)
      formatted_message = message
      formatted_message = "[#{@scope}] #{formatted_message}" if @scope
      @logger.add level, formatted_message, progname, &block
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
low-0.0.11 lib/low/scoped_logger.rb
low-0.0.10 lib/low/scoped_logger.rb
low-0.0.9 lib/low/scoped_logger.rb
low-0.0.8 lib/low/scoped_logger.rb
low-0.0.7 lib/low/scoped_logger.rb