lib/pupa/logger.rb
require 'logger'
require 'colored'
module Pupa
# A logger factory.
class Logger
# Returns a configured logger.
#
# @param [String] progname the name of the program performing the logging
# @param [String] level the log level, one of "DEBUG", "INFO", "WARN",
# "ERROR", "FATAL" or "UNKNOWN"
# @param [String,IO] logdev the log device
# @return [Logger] a configured logger
def self.new(progname, level: 'INFO', logdev: STDOUT)
logger = ::Logger.new(logdev)
logger.level = ::Logger.const_get(level)
logger.progname = progname
logger.formatter = proc do |severity, datetime, progname, msg|
message = "#{datetime.strftime('%T')} #{severity} #{progname}: #{msg}\n"
case severity
when 'DEBUG'
message.magenta
when 'INFO'
message.white
when 'WARN'
message.yellow
when 'ERROR'
message.red
when 'FATAL'
message.bold.red_on_white
end
end
logger
end
end
end