1
0
Fork 0
mirror of https://github.com/capistrano/capistrano synced 2023-03-27 23:21:18 -04:00
capistrano/lib/switchtower/logger.rb
2006-01-28 16:36:14 +00:00

59 lines
1.3 KiB
Ruby

module SwitchTower
class Logger #:nodoc:
attr_accessor :level
IMPORTANT = 0
INFO = 1
DEBUG = 2
TRACE = 3
MAX_LEVEL = 3
def initialize(options={})
output = options[:output] || STDERR
case
when output.respond_to?(:puts)
@device = output
else
@device = File.open(output.to_str, "a")
@needs_close = true
end
@options = options
@level = 0
end
def close
@device.close if @needs_close
end
def log(level, message, line_prefix=nil)
if level <= self.level
indent = "%*s" % [MAX_LEVEL, "*" * (MAX_LEVEL - level)]
message.split(/\r?\n/).each do |line|
if line_prefix
@device.print "#{indent} [#{line_prefix}] #{line.strip}\n"
else
@device.puts "#{indent} #{line.strip}\n"
end
end
end
end
def important(message, line_prefix=nil)
log(IMPORTANT, message, line_prefix)
end
def info(message, line_prefix=nil)
log(INFO, message, line_prefix)
end
def debug(message, line_prefix=nil)
log(DEBUG, message, line_prefix)
end
def trace(message, line_prefix=nil)
log(TRACE, message, line_prefix)
end
end
end