local log = {} io.stdout:setvbuf("no") local _format = "%c" log.dateFormat = function(fmt) _format = fmt end log.LEVEL = { INFO = 4, DEBUG = 3, WARN = 2, ERROR = 1, NONE = 0 } local logTag = { [log.LEVEL.INFO] = "[Info]", [log.LEVEL.DEBUG] = "[Debug]", [log.LEVEL.WARN] = "[Warn]", [log.LEVEL.ERROR] = "[Error]", } log.level = log.LEVEL.INFO log.strict = function(level) log.level = level end log.log = function(level, msg) if level <= log.level then local time = os.date(_format, os.time()) print(time .. logTag[level] .. ":" .. msg) end end log.info = function(msg) log.log(log.LEVEL.INFO, msg) end log.debug = function(msg) log.log(log.LEVEL.DEBUG, msg) end log.warn = function(msg) log.log(log.LEVEL.WARN, msg) end log.error = function(msg) log.log(log.LEVEL.ERROR, msg) end return log