Sha256: 409b96f644b12d26e6201ad7dd70972c56b0b92afb84687e6a21ca18af088038

Contents?: true

Size: 1.54 KB

Versions: 4

Compression:

Stored size: 1.54 KB

Contents

# Copyright: Copyright (c) 2004  Nicolas Pouillard. All rights reserved.
# Author: Nicolas Pouillard  <ertai@lrde.epita.fr>.
# License: Gnu General Public License.

# $LastChangedBy: polrop $
# $Id: dlogger.rb 99 2005-01-13 19:14:44Z polrop $

require 'logger'

# This Logger subclass permit to use more debug levels
#
# log = DLogger.new(STDERR)
# log.level = -1
# log.debug1 "You see me"
# log.debug2 "You see me"
# log.debug3 "You don't see me"
#
class DLogger < Logger

  def format_severity ( severity )
    return super if severity >= 0
    return "DEBUG#{severity.abs + 1}"
  end
  private :format_severity

  def method_missing ( meth, progname=nil, *args, &block )
    return super unless meth.to_s =~ /^debug(\d+)$/ or !args.empty
    add(-$1.to_i + 1, nil, progname, &block)
  end

  Format = "%s, [%s#%d] %6s -- %s: %s\n"
  def format_message(severity, timestamp, msg, progname)
    Format % [severity[0..0], timestamp, $$, severity, progname, msg]
  end
  private :format_message

end # class DLogger


if defined? TEST_MODE or $0 == __FILE__

  require 'stringio'
  require 'test/unit'

  class DLoggerTest < Test::Unit::TestCase

    def test1
      cout = StringIO.new
      log = DLogger.new(cout)
      log.level = -1
      log.debug1 'You see me'
      log.debug3 'You don\'t see me'
      log.debug2 'You see me'
      cout.rewind
      ref = /D, \[\d+-\d+-\d+.\d+:\d+:\d+\.\d+ #\d+\]  DEBUG -- : You see me
D, \[\d+-\d+-\d+.\d+:\d+:\d+\.\d+ #\d+\] DEBUG2 -- : You see me/
      assert_match(ref, cout.readlines.join)
    end

  end # class DLoggerTest

end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
ttk-0.1.576 ruby_ex/dlogger.rb
ttk-0.1.580 ruby_ex/dlogger.rb
ttk-0.1.579 ruby_ex/dlogger.rb
vcs-0.2.148 ruby_ex/dlogger.rb