log.lua 1.32 KB
--[[
@Author  : Mr.wang
@Date    : 2016-04-21 16:01:17
@Content : 
配置输出级别
setLevel(log.xxx)
传入输出流
logout(self, lv, ...)
--]]

local log = setmetatable({}, {__index=_G})
setfenv(1, log)

DEBUG = "DEBUG"
INFO = "INFO"
WARN = "WARN"
ERROR = "ERROR"
FATAL = "FATAL"
NONE = "NONE"

local LEVEL = {
    [DEBUG] = 1,
    [INFO] = 2,
    [WARN] = 3,
    [ERROR] = 4,
    [FATAL] = 5,
    [NONE] = 6,
}

local setLevel_ = function(self, lv)
    assert(LEVEL[lv], string.format("undefined level '%s'", tostring(lv)))
    self.level = lv
    print("self.level:",self.level)
end

local log_ = function(self, lv, ...)
    assert(LEVEL[lv], string.format("undefined level '%s'", tostring(lv)))
    if LEVEL[lv] < LEVEL[self.level] then
        return
    end
    self:logout(lv, ...)
end

function new(logout)
    assert("function"==type(logout), "logout must be a function")
    local logger = {level=DEBUG, setLevel=setLevel_, logout=logout}

    logger.debug = function(self, ...) return log_(self, DEBUG, ...) end
    logger.info = function(self, ...) return log_(self, INFO, ...) end
    logger.warn = function(self, ...) return log_(self, WARN, ...) end
    logger.error = function(self, ...) return log_(self, ERROR, ...) end
    logger.fatal = function(self, ...) return log_(self, FATAL, ...) end

    return logger
end

return log