# HG changeset patch # User Matthew Wild # Date 1322433926 0 # Node ID 9b6fca5d9a0230f786e9a28ae3d3089009aea928 # Parent d158c97556b4fccce5cb7b9bfe2545a039957e36 verse, squishy: Port to Prosody's util.logger. Adds new function, verse.set_log_handler(handler, levels). diff -r d158c97556b4 -r 9b6fca5d9a02 init.lua --- a/init.lua Sun Nov 27 22:07:59 2011 +0000 +++ b/init.lua Sun Nov 27 22:45:26 2011 +0000 @@ -22,7 +22,7 @@ function verse.new(logger, base) local t = setmetatable(base or {}, stream); t.id = tostring(t):match("%x*$"); - t:set_logger(logger or verse.log, true); + t.logger = logger or verse.new_logger("stream"..t.id); t.events = events.new(); t.plugins = {}; return t; @@ -30,25 +30,16 @@ verse.add_task = require "util.timer".add_task; -verse.logger = logger.init; -- Deprecated +verse.logger = logger.init; -- COMPAT: Deprecated verse.new_logger = logger.init; verse.log = verse.logger("verse"); -function verse.set_logger(logger) - verse.log = logger; - server.setlogger(logger); -end - -function verse.filter_log(levels, logger) - local level_set = {}; - for _, level in ipairs(levels) do - level_set[level] = true; +function verse.set_log_handler(log_handler, levels) + levels = levels or { "debug", "info", "warn", "error" }; + logger.reset(); + for i, level in ipairs(levels) do + logger.add_level_sink(level, log_handler); end - return function (level, name, ...) - if level_set[level] then - return logger(level, name, ...); - end - end; end local function error_handler(err) @@ -114,42 +105,15 @@ -- Logging functions function stream:debug(...) - if self.logger and self.log.debug then - return self.logger("debug", ...); - end + return self.logger("debug", ...); end function stream:warn(...) - if self.logger and self.log.warn then - return self.logger("warn", ...); - end + return self.logger("warn", ...); end function stream:error(...) - if self.logger and self.log.error then - return self.logger("error", ...); - end -end - -function stream:set_logger(logger, levels) - local old_logger = self.logger; - if logger then - self.logger = logger; - end - if levels then - if levels == true then - levels = { "debug", "info", "warn", "error" }; - end - self.log = {}; - for _, level in ipairs(levels) do - self.log[level] = true; - end - end - return old_logger; -end - -function stream_mt:set_log_levels(levels) - self:set_logger(nil, levels); + return self.logger("error", ...); end -- Event handling diff -r d158c97556b4 -r 9b6fca5d9a02 libs/logger.lua --- a/libs/logger.lua Sun Nov 27 22:07:59 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -local select, tostring = select, tostring; -local io_write = io.write; -module "logger" - -local function format(format, ...) - local n, maxn = 0, #arg; - return (format:gsub("%%(.)", function (c) if c ~= "%" and n <= maxn then n = n + 1; return tostring(arg[n]); end end)); -end - -local function format(format, ...) - local n, maxn = 0, select('#', ...); - local arg = { ... }; - return (format:gsub("%%(.)", function (c) if n <= maxn then n = n + 1; return tostring(arg[n]); end end)); -end - -function init(name) - return function (level, message, ...) - io_write(level, "\t", format(message, ...), "\n"); - end -end - -return _M; diff -r d158c97556b4 -r 9b6fca5d9a02 squishy --- a/squishy Sun Nov 27 22:07:59 2011 +0000 +++ b/squishy Sun Nov 27 22:45:26 2011 +0000 @@ -3,7 +3,6 @@ -- Verse-specific versions of libraries Module "util.encodings" "libs/encodings.lua" Module "util.hashes" "libs/hashes.lua" -Module "util.logger" "libs/logger.lua" Module "util.sha1" "util/sha1.lua" Module "lib.adhoc" "libs/adhoc.lib.lua" @@ -27,6 +26,7 @@ Module "util.dataforms" "util/dataforms.lua" Module "util.caps" "util/caps.lua" Module "util.vcard" "util/vcard.lua" +Module "util.logger" "util/logger.lua" -- Verse plugins plugins = {