class AsciiLogger
Public Class Methods
new(name, path)
click to toggle source
logger.log, “message”, :stdo logger.log, “message”, :file logger.log, “message”, :both log, error, info, warn, fatal, unknown
# File lib/ascii_invoicer/ascii_logger.rb, line 25 def initialize name, path path = File.expand_path path FileUtils.touch path @log_file = File.open path, ?a @known_loggers = [:file, :stdo, :both] @known_methods = [:info, :warn, :error, :fatal, :unknown] @file_logger = Logger.new MultiIO.new @log_file @stdo_logger = Logger.new STDOUT @both_logger = Logger.new MultiIO.new STDOUT, @log_file @file_logger.progname = name @stdo_logger.progname = name @both_logger.progname = name end
Public Instance Methods
log(logger_name, method_name, message)
click to toggle source
# File lib/ascii_invoicer/ascii_logger.rb, line 41 def log logger_name, method_name, message raise "#{method_name}, unknown method type, use #{@known_methods}" unless @known_methods.include? method_name raise "#{logger_name}, unknown logger type, use #{@known_loggers}" unless @known_loggers.include? logger_name logger_name = "@#{(logger_name.to_s)}_logger".to_sym if instance_variables.include? logger_name logger = instance_variable_get logger_name logger.method(method_name).call message else puts "ERROR: logger not found (#{logger_name})" end end
method_missing(method_name, *stuff)
click to toggle source
imitates stdlib logger interface -> AsciiLogger::error message, {:stdo:file:both}
# File lib/ascii_invoicer/ascii_logger.rb, line 55 def method_missing method_name, *stuff if @known_methods.include? method_name.to_sym message = stuff[0] logger = stuff[1].to_sym if stuff[1] logger = :both unless @known_loggers.include? logger log logger, method_name.to_sym, message end end