elua: more logging functionality (utility funcs for default domain printing)

This commit is contained in:
Daniel Kolesa 2014-04-04 16:37:16 +01:00 committed by Daniel Kolesa
parent 3af66c7f65
commit dcd2b6166b
2 changed files with 37 additions and 2 deletions

View File

@ -103,13 +103,36 @@ M.log_full = log_full
local getinfo = debug.getinfo
local getfuncname = function(info)
return info.name or "<" .. tostring(info.func) .. ">", info.currentline
end
local log = function(dom, level, msg, loff)
local info = getinfo(2 + (loff or 0), "nlSf")
log_full(dom, level, info.source,
info.name or "<" .. tostring(info.func) .. ">", info.currentline, msg)
log_full(dom, level, info.source, getfuncname(info), info.currentline, msg)
end
M.log = log
local logfuncs = {
{ "crit", C.EINA_LOG_LEVEL_CRITICAL },
{ "err", C.EINA_LOG_LEVEL_ERR },
{ "warn", C.EINA_LOG_LEVEL_WARN },
{ "info", C.EINA_LOG_LEVEL_INFO },
{ "dbg", C.EINA_LOG_LEVEL_DBG }
}
for i, v in ipairs(logfuncs) do
M["log_" .. v[1]] = function(msg)
if not default_domain then return end
local info = getinfo(2, "nlSf")
local dom = ffi.cast("Domain_Private*", default_domain).domain
eina.eina_log_print(dom, v[2], info.source, getfuncname(info),
info.currentline, msg)
end
end
logfuncs = nil
M.Domain_Base = util.Object:clone {
set_level = function(self, level)
local dom = get_dom(self)
@ -166,4 +189,6 @@ M.Domain = M.Domain_Base:clone {
end
}
M.set_default_domain = f
return M

View File

@ -7,6 +7,16 @@ local win = elm.Window("test", "Hello World")
dom:log(log.level.INFO, "created window")
dom:log(log.level.ERR, "error test!")
log.log_err("test with default log domain")
local foo = function()
for i = 1, 4 do
dom:log(log.level.ERR, "testing: " .. i)
end
end
foo()
win:smart_callback_add("delete,request", function()
elm.exit()
end)