You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.6 KiB
Lua
78 lines
1.6 KiB
Lua
local string_format = string.format
|
|
local tconcat = table.concat
|
|
local os_date = os.date
|
|
local string_sub = string.sub
|
|
local os_clock = os.clock
|
|
|
|
local ESC = string.char(27, 91)
|
|
local RESET = ESC .. '0m'
|
|
|
|
local M = {}
|
|
|
|
M.LOG_LEVEL = {
|
|
DEBUG = 1,
|
|
INFO = 2,
|
|
WARN = 3,
|
|
ERROR = 4,
|
|
FATAL = 5,
|
|
}
|
|
|
|
M.LOG_LEVEL_NAME = {
|
|
[1] = "DEBUG",
|
|
[2] = "INFO ",
|
|
[3] = "WARN ",
|
|
[4] = "ERROR",
|
|
[5] = "FATAL",
|
|
}
|
|
|
|
M.LOG_COLOR = {
|
|
[1] = ESC .. '34m',
|
|
[2] = ESC .. '32m',
|
|
[3] = ESC .. '33m',
|
|
[4] = ESC .. '31m',
|
|
[5] = ESC .. '35m',
|
|
}
|
|
|
|
M.DEFAULT_CATEGORY = "root"
|
|
|
|
function M.log_dir(log_root, date)
|
|
return string_format("%s/%04d-%02d-%02d", log_root or ".", date.year, date.month, date.day)
|
|
end
|
|
|
|
function M.log_path(dir, prefix, category, date)
|
|
return string_format("%s/%s%s_%04d-%02d-%02d.log", dir or ".", prefix or "", category or M.DEFAULT_CATEGORY,
|
|
date.year, date.month, date.day)
|
|
end
|
|
|
|
function M.format(addr, level, di, ...)
|
|
local param = {...}
|
|
local date = os_date("*t")
|
|
local ms = string_sub(os_clock(), 3, 6)
|
|
|
|
local time = string_format("%02d:%02d:%02d.%02d", date.hour, date.min, date.sec, ms)
|
|
|
|
local fileline = ""
|
|
if di then
|
|
fileline = (" [%s:%d]"):format(di.short_src, di.currentline)
|
|
end
|
|
|
|
for k, v in pairs(param) do
|
|
param[k] = tostring(v)
|
|
end
|
|
|
|
local msg =
|
|
string_format("[:%08x][%s][%s] %s%s", addr, M.LOG_LEVEL_NAME[level], time, tconcat(param, " "), fileline)
|
|
|
|
return msg
|
|
end
|
|
|
|
function M.color(level, msg)
|
|
local c = M.LOG_COLOR[level]
|
|
if not c then
|
|
return msg
|
|
end
|
|
return c .. msg .. RESET
|
|
end
|
|
|
|
return M
|