Compare commits

..

2 Commits

Author SHA1 Message Date
DanyLE
32577500de improve log function
All checks were successful
gitea-sync/silk/pipeline/head This commit looks good
2023-07-07 20:01:59 +02:00
DanyLE
7dcfa9c8f0 fix JSON encode bug + improve logging function 2023-07-07 19:51:33 +02:00
2 changed files with 22 additions and 8 deletions

View File

@ -126,17 +126,28 @@ function loadscript(file, args)
end end
end end
-- logging helpers local __MSG = function(fmt,...)
local va = {...}
local log_msg = fmt
local ret,msg = pcall(function() return string.format(fmt, table.unpack(va)) end)
if ret then
log_msg = msg
else
log_msg = string.format("Error processing format string [%s]: %s", fmt, 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, ...)

View File

@ -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