62 lines
1.7 KiB
Lua
62 lines
1.7 KiB
Lua
local tty = require("kong.cmd.utils.tty")
|
|
|
|
local colors
|
|
|
|
if not tty.isatty then
|
|
colors = setmetatable({}, {__index = function() return "" end})
|
|
else
|
|
colors = { green = '\27[32m', yellow = '\27[33m', red = '\27[31m', reset = '\27[0m' }
|
|
end
|
|
|
|
local LOG_LEVEL = ngx.NOTICE
|
|
|
|
-- Some logging helpers
|
|
local level_cfg = {
|
|
[ngx.DEBUG] = { "debug", colors.green },
|
|
[ngx.INFO] = { "info", "" },
|
|
[ngx.NOTICE] = { "notice", "" },
|
|
[ngx.WARN] = { "warn", colors.yellow },
|
|
[ngx.ERR] = { "error", colors.red },
|
|
[ngx.CRIT] = { "crit", colors.red },
|
|
}
|
|
|
|
local function set_log_level(lvl)
|
|
if not level_cfg[lvl] then
|
|
error("Unknown log level ", lvl, 2)
|
|
end
|
|
LOG_LEVEL = lvl
|
|
end
|
|
|
|
local function log(lvl, namespace, ...)
|
|
lvl = lvl or ngx.INFO
|
|
local lvl_literal, lvl_color = unpack(level_cfg[lvl] or {"info", ""})
|
|
if lvl <= LOG_LEVEL then
|
|
ngx.update_time()
|
|
local msec = ngx.now()
|
|
print(lvl_color,
|
|
("%s%s %8s %s "):format(
|
|
ngx.localtime():sub(12),
|
|
("%.3f"):format(msec - math.floor(msec)):sub(2),
|
|
("[%s]"):format(lvl_literal), namespace
|
|
),
|
|
table.concat({...}, ""),
|
|
colors.reset)
|
|
end
|
|
end
|
|
local function new_logger(namespace)
|
|
return setmetatable({
|
|
debug = function(...) log(ngx.DEBUG, namespace, ...) end,
|
|
info = function(...) log(ngx.INFO, namespace, ...) end,
|
|
warn = function(...) log(ngx.WARN, namespace, ...) end,
|
|
err = function(...) log(ngx.ERR, namespace, ...) end,
|
|
crit = function(...) log(ngx.CRIT, namespace, ...) end,
|
|
log_exec = function(...) log(ngx.DEBUG, namespace, "=> ", ...) end,
|
|
}, {
|
|
__call = function(self, lvl, ...) log(lvl, namespace, ...) end,
|
|
})
|
|
end
|
|
|
|
return {
|
|
new_logger = new_logger,
|
|
set_log_level = set_log_level,
|
|
} |