class HLogger

Constants

HLOG_MAXSIZE

log on screen if filename is stdout

Public Class Methods

new(filename, level: 'DEBUG') click to toggle source
# File lib/hengine/hlogger.rb, line 7
def initialize(filename, level: 'DEBUG')
  @levels = self._levels 
  @levelToNum = self._toNum
  @level = @levelToNum[level]
  return if(filename == "stdout")
  filename = "logger.txt" if(filename == nil)
  if (File.exist?(filename) and File.size(filename).to_f / 1000000 >= HLOG_MAXSIZE)
    timestamp = DateTime.now.strftime "%d-%m-%Y-%H.%M.%S"
    File.rename(filename, "#{filename}.#{timestamp}")
  end
  @file = File.new(filename, "a+")
end

Public Instance Methods

<<(str, level = 'DEBUG') click to toggle source

hlogger << “hello world” hlogger.<<(“hello world”, “DEBUG”) # warning: if i put some space doesn't work

# File lib/hengine/hlogger.rb, line 68
def << (str, level = 'DEBUG')

  level = self.toNum(level) if(level.class == String)

  return if(level > @level)

  t = self.timestamp
  strLevel = self.level(level)
  if(@file)
    @file << "[#{strLevel} #{t}]$ #{str}\n"
  else
    case self.level(level)
    when "ERROR"
      puts "[#{strLevel} hypersonic]$ #{str}".red 
    when "FATAL"
      puts "[#{strLevel} hypersonic]$ #{str}".red 
    when "DEBUG"
      puts "[#{strLevel} hypersonic]$ #{str}".green 
    when "WARNING"
      puts "[#{strLevel} hypersonic]$ #{str}".hight_cyan
    when "INFO"
      puts "[#{strLevel} hypersonic]$ #{str}".hight_purple 
    else
      puts "[#{strLevel} hypersonic]$ #{str}".white
    end
  end

  return self

end
_levels() click to toggle source
# File lib/hengine/hlogger.rb, line 20
def _levels
  levels = []
  levels << "OFF"
  levels << "FATAL"
  levels << "ERROR"
  levels << "WARNING"
  levels << "INFO"
  levels << "DEBUG"
  levels << "DEBUG2"
  levels << "DEBUG3"
  levels << "DEBUG4"
  levels << "ALL"

  return levels
end
_toNum() click to toggle source
# File lib/hengine/hlogger.rb, line 36
def _toNum

  levelToNum = {}
  self._levels.each_with_index do |level, i|
    levelToNum[level] = i
  end
  
  return levelToNum

end
close() click to toggle source
# File lib/hengine/hlogger.rb, line 57
def close
  @file.close if(@file)
end
level(value) click to toggle source
# File lib/hengine/hlogger.rb, line 51
def level(value)
  
  return @levels[value]

end
timestamp() click to toggle source
# File lib/hengine/hlogger.rb, line 61
def timestamp
  return DateTime.now.strftime "%d-%m-%Y %H:%M:%S"
end
toNum(strLevel) click to toggle source
# File lib/hengine/hlogger.rb, line 47
def toNum(strLevel)
  return @levelToNum[strLevel]
end
write(str, level) click to toggle source

You can use this function more beautiful than .<<(…)

# File lib/hengine/hlogger.rb, line 101
def write(str, level)
  self.<<(str, level)
end