rubyx/lib/util/logging.rb

53 lines
1.3 KiB
Ruby

# a simple module to be included into a class that want to log
#
# use the standard logger and the class name as the program name
#
# The standard functions are available on the log object
# And the log level may be set after inclusion with level function (that takes symbols)
require_relative "logger"
module Util
module Logging
def self.included(base)
base.extend(Methods)
end
def log
self.class.log
end
module Methods
def log
return @logger if @logger
@logger = Logger.new log_stream
@logger.progname = self.name.split("::").last
@logger.level = Logger::INFO
@logger
end
def log_level l
log.level = case l
when :unknown
Logger::UNKNOWN
when :fatal
Logger::FATAL
when :error
Logger::ERROR
when :warn
Logger::WARN
when :info
Logger::INFO
when :debug
Logger::DEBUG
else
raise "unknown log level #{l}"
end
end
private
def log_stream
STDOUT
end
end
end
end