日志.lua 1.8 KB
Newer Older
baidwwy's avatar
优化  
baidwwy 已提交
1 2
-- @Author              : GGELUA
-- @Last Modified by    : baidwwy
baidwwy's avatar
baidwwy 已提交
3 4
-- @Date                : 2022-03-07 18:52:00
-- @Last Modified time  : 2022-05-14 10:13:20
baidwwy's avatar
lua  
baidwwy 已提交
5 6 7 8 9 10 11 12 13 14 15
local cprint = require('cprint')
local _isdebug = require('ggelua').isdebug
local lcolor = {
    INFO = '\x1b[47;30mINFO\x1b[0m',
    WARN = '\x1b[43;30mWARN\x1b[0m',
    ERROR = '\x1b[41;30mERROR\x1b[0m'
}

local GGE日志 = class('GGE日志')

function GGE日志:GGE日志(file, logger)
baidwwy's avatar
baidwwy 已提交
16 17
    self._logger = logger or 'GGELUA'
    self._DB = require('LIB.SQLITE3')(file or 'log.db3')
baidwwy's avatar
lua  
baidwwy 已提交
18

baidwwy's avatar
baidwwy 已提交
19
    local r = self._DB:取值("select count(*) from sqlite_master where name='log';")
baidwwy's avatar
lua  
baidwwy 已提交
20
    if r == 0 then
baidwwy's avatar
baidwwy 已提交
21
        self._DB:执行 [[
baidwwy's avatar
lua  
baidwwy 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
            CREATE TABLE "log" (
                "date" integer NOT NULL,
                "logger" TEXT,
                "level" integer NOT NULL,
                "message" TEXT NOT NULL,
                "exception" TEXT
              );
        ]]
    end
end

function GGE日志:LOG(level, msg, ...)
    if select('#', ...) > 0 then
        msg = msg:format(...)
    end
    local time = os.time()
baidwwy's avatar
baidwwy 已提交
38 39
    cprint(string.format('[%s] [%s] [%s] %s', os.date('%X', time), self._logger, lcolor[level] or level, tostring(msg)))
    local r = self._DB:执行("insert into log(date,logger,level,message) values('%d','%s','%s','%s')", time, self._logger, level, msg)
baidwwy's avatar
lua  
baidwwy 已提交
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
end

function GGE日志:INFO(msg, ...)
    self:LOG('INFO', msg, ...)
end

function GGE日志:WARN(msg, ...)
    self:LOG('WARN', msg, ...)
end

function GGE日志:ERROR(msg, ...)
    self:LOG('ERROR', msg, ...)
end

function GGE日志:DEBUG(msg, ...)
    if _isdebug then
        self:LOG('DEBUG', msg, ...)
    end
end
baidwwy's avatar
baidwwy 已提交
59 60 61 62 63 64 65 66 67

function GGE日志:print(...)
    local arg = {}
    for i = 1, select('#', ...) do
        arg[i] = tostring(select(i, ...))
    end
    self:LOG('INFO', table.concat(arg, '\t'))
end

baidwwy's avatar
lua  
baidwwy 已提交
68
return GGE日志