require 'singleton' require 'logging' module Scoutui::Logger class LogMgr include Singleton LOGLEVELS = [ DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, FATAL = 4] attr_accessor :root attr_accessor :commands attr_accessor :benchmarks attr_accessor :level def initialize @root = Logging.logger(STDOUT) @root.level = :debug @level = LOGLEVELS[DEBUG] Logging.appenders.stderr('Standard Error', :level => :error) # Logging.appenders.file('Command File', :filename => 'command.log') # Logging.logger['Commands'].appenders = 'Command File' @asserts = Logging.logger['Assertions'] @asserts.add_appenders( Logging.appenders.stdout ) @asserts.add_appenders( Logging.appenders.file("assertions.log") ) @asserts.level = :debug @commands = Logging.logger['Commands'] @commands.add_appenders( Logging.appenders.stdout, Logging.appenders.file('commands.log') ) @commands.level = :debug @benchmarks = Logging.logger['Benchmarks'] @benchmarks.add_appenders( Logging.appenders.stdout, Logging.appenders.file('benchmarks.log') ) @benchmarks.level = :info #Logging.logger.root.level = :warn end def asserts @asserts end def command @commands end def commands @commands end def setLevel(_level) @root.level = _level.to_sym _l = _level.to_s if _l.match(/debug/i) @level = LOGLEVELS[DEBUG] elsif _l.match(/info/i) @level = LOGLEVELS[INFO] elsif _l.match(/warn/i) @level = LOGLEVELS[WARN] elsif _l.match(/error/i) @level = LOGLEVELS[ERROR] elsif _l.match(/fatal/i) @level = LOGLEVELS[FATAL] end end def warn(txt) log('warn', txt) end def err(txt) error(txt) end def error(txt) log('error', txt) end def fatal(txt) log('fatal', txt) end def info(txt) log('info', txt) end def debug(txt) log('debug', txt) end def benchmark @benchmarks end def benchmarks @benchmarks end def log(level, txt) if level.match(/debug/i) @root.debug txt if DEBUG >= @level elsif level.match(/info/i) @root.info txt if INFO >= @level elsif level.match(/warn/i) @root.warn txt if WARN >= @level elsif level.match(/error/i) @root.error txt if ERROR >= @level elsif level.match(/fatal/i) @root.fatal txt if FATAL >= @level end end end end