mirror of
https://github.com/lxsang/silk.git
synced 2024-12-26 12:58:22 +01:00
fix JSON encode bug + improve logging function
This commit is contained in:
parent
a6838e5294
commit
7dcfa9c8f0
@ -126,17 +126,34 @@ function loadscript(file, args)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- logging helpers
|
local __MSG = function(fmt,...)
|
||||||
|
local va = {...}
|
||||||
|
if va then
|
||||||
|
local out = {}
|
||||||
|
for i,v in ipairs(va) do
|
||||||
|
local esc = v:gsub("[%%]", {["%"] = "%%"})
|
||||||
|
table.insert(out, esc)
|
||||||
|
end
|
||||||
|
va = out
|
||||||
|
end
|
||||||
|
local log_msg = fmt
|
||||||
|
local ret,msg = pcall(function() return string.format(fmt, table.unpack(va)) end)
|
||||||
|
if msg then
|
||||||
|
log_msg = msg
|
||||||
|
end
|
||||||
|
return log_msg
|
||||||
|
end
|
||||||
|
|
||||||
function LOG_INFO(fmt, ...)
|
function LOG_INFO(fmt, ...)
|
||||||
fcgio:log_info(string.format(fmt or "LOG", ...))
|
fcgio:log_info(__MSG(fmt or "INFO",table.unpack({...})))
|
||||||
end
|
end
|
||||||
|
|
||||||
function LOG_ERROR(fmt, ...)
|
function LOG_ERROR(fmt, ...)
|
||||||
fcgio:log_error(string.format(fmt or "ERROR", ...))
|
fcgio:log_error(__MSG(fmt or "ERROR",table.unpack({...})))
|
||||||
end
|
end
|
||||||
|
|
||||||
function LOG_DEBUG(fmt, ...)
|
function LOG_DEBUG(fmt, ...)
|
||||||
fcgio:log_debug(string.format(fmt or "ERROR", ...))
|
fcgio:log_debug(__MSG(fmt or "DEBUG",table.unpack({...})))
|
||||||
end
|
end
|
||||||
|
|
||||||
function LOG_WARN(fmt, ...)
|
function LOG_WARN(fmt, ...)
|
||||||
|
@ -20,7 +20,7 @@ function utils.is_array(table)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
function utils.escape(s)
|
function utils.escape(s, ignore_percent)
|
||||||
local replacements = {
|
local replacements = {
|
||||||
["\\"] = "\\\\",
|
["\\"] = "\\\\",
|
||||||
['"'] = '\\"',
|
['"'] = '\\"',
|
||||||
@ -28,9 +28,11 @@ function utils.escape(s)
|
|||||||
["\t"] = "\\t",
|
["\t"] = "\\t",
|
||||||
["\b"] = "\\b",
|
["\b"] = "\\b",
|
||||||
["\f"] = "\\f",
|
["\f"] = "\\f",
|
||||||
["\r"] = "\\r",
|
["\r"] = "\\r"
|
||||||
["%"] = "%%"
|
|
||||||
}
|
}
|
||||||
|
if not ignore_percent then
|
||||||
|
replacements["%"] = "%%"
|
||||||
|
end
|
||||||
return (s:gsub("[\\'\"\n\t\b\f\r%%]", replacements))
|
return (s:gsub("[\\'\"\n\t\b\f\r%%]", replacements))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -194,7 +196,8 @@ function JSON.encode(obj)
|
|||||||
end
|
end
|
||||||
elseif t == 'string' then
|
elseif t == 'string' then
|
||||||
-- print('"'..utils.escape(obj)..'"')
|
-- print('"'..utils.escape(obj)..'"')
|
||||||
return '"' .. utils.escape(obj) .. '"'
|
-- ignore % escape as this is for a LUA using
|
||||||
|
return '"' .. utils.escape(obj, true) .. '"'
|
||||||
elseif t == 'boolean' or t == 'number' then
|
elseif t == 'boolean' or t == 'number' then
|
||||||
return tostring(obj)
|
return tostring(obj)
|
||||||
elseif obj == nil then
|
elseif obj == nil then
|
||||||
|
Loading…
Reference in New Issue
Block a user