--[[

ESTE MODULO ES UTILIZADO PARA EL CASO CUANDO SE INSTANCIA DESDE UN SCRIPTS YA QUE ESTOS NO TIENEN UNA INSTANCIA DE LA LIBBLOGGER.

PARA EL CASO CUANDO LA ROCKA SE INSTANCIA DESDE EL AGENT, AHI SE UTILIZA LA LIBBLOGER.

]]--


local lualiblogger = require "lualiblogger"
local m_libLogger

local function make_compatible_logger (owner)
	owner = owner or "helpers1"
	return lualiblogger.custom(owner, 31, lualiblogger.dest.console)
end

local m_enableLibLogger = false
function SetEnabledLogger (enabled, owner)
	print("owner: " .. tostring(owner))
	m_enableLibLogger = enabled
	m_libLogger = make_compatible_logger(owner)
end

local function LogArgumentsFormatter (...)
	local args = {...}
	for i=1, select("#", ...) do
		local arg = args[i]
		local arg_type = type(arg)
		if arg_type ~= "string" and arg_type ~= "number" then
			args[i] = tostring(arg)
		end
	end
	return unpack(args)
end

LogDebug = LogDebug or function (fmt, ...)
	local msg = string.format(fmt, LogArgumentsFormatter(...))
	if m_enableLibLogger then
		return m_libLogger.debug(msg)
	end
	print("-[DEBUG] " .. msg)
end

LogInfo = LogInfo or function (fmt, ...)
	local msg = string.format(fmt, LogArgumentsFormatter(...))
	if m_enableLibLogger then
		return m_libLogger.info(msg)
	end
	print("-[INFO ] " .. msg)
end

LogWarning = LogWarning or function (fmt, ...)
	local msg = string.format(fmt, LogArgumentsFormatter(...))
	if m_enableLibLogger then
		return m_libLogger.warn(msg)
	end
	print("-[WARN ] " .. msg)
end

LogError = LogError or function (fmt, ...)
	local msg = string.format(fmt, LogArgumentsFormatter(...))
	if m_enableLibLogger then
		return m_libLogger.error(msg)
	end
	print("-[ERROR] " .. msg)
end

LogFatal = LogFatal or function (fmt, ...)
	local msg = string.format(fmt, LogArgumentsFormatter(...))
	if m_enableLibLogger then
		return m_libLogger.fatal(msg)
	end
	print("-[FATAL] " .. msg)
end
