util.logger: Remove support for the 'log_sources' option, to remove a dependency...
[prosody.git] / util / logger.lua
index 1a2985b414e8412f83f5d7393d8fae3d6a5ad0fd..80b5bcd08416b9f02d0ebebb57f34470d40ef341 100644 (file)
@@ -1,6 +1,6 @@
--- Prosody IM v0.4
--- Copyright (C) 2008-2009 Matthew Wild
--- Copyright (C) 2008-2009 Waqas Hussain
+-- Prosody IM
+-- Copyright (C) 2008-2010 Matthew Wild
+-- Copyright (C) 2008-2010 Waqas Hussain
 -- 
 -- This project is MIT/X11 licensed. Please see the
 -- COPYING file in the source package for more information.
@@ -8,9 +8,6 @@
 
 local pcall = pcall;
 
-local config = require "core.configmanager";
-local log_sources = config.get("*", "core", "log_sources");
-
 local find = string.find;
 local ipairs, pairs, setmetatable = ipairs, pairs, setmetatable;
 
@@ -26,18 +23,6 @@ local make_logger;
 local outfunction = nil;
 
 function init(name)
-       if log_sources then
-               local log_this = false;
-               for _, source in ipairs(log_sources) do
-                       if find(name, source) then 
-                               log_this = true;
-                               break;
-                       end
-               end
-               
-               if not log_this then return function () end end
-       end
-       
        local log_debug = make_logger(name, "debug");
        local log_info = make_logger(name, "info");
        local log_warn = make_logger(name, "warn");
@@ -75,7 +60,7 @@ function make_logger(source_name, level)
        local logger = function (message, ...)
                if source_handlers then
                        for i = 1,num_source_handlers do
-                               if source_handlers(source_name, level, message, ...) == false then
+                               if source_handlers[i](source_name, level, message, ...) == false then
                                        return;
                                end
                        end
@@ -103,6 +88,21 @@ function setwriter(f)
        return ok, ret;
 end
 
+function reset()
+       for k in pairs(name_sinks) do name_sinks[k] = nil; end
+       for level, handler_list in pairs(level_sinks) do
+               -- Clear all handlers for this level
+               for i = 1, #handler_list do
+                       handler_list[i] = nil;
+               end
+       end
+       for k in pairs(name_patterns) do name_patterns[k] = nil; end
+
+       for _, modify_hook in pairs(modify_hooks) do
+               modify_hook();
+       end
+end
+
 function add_level_sink(level, sink_function)
        if not level_sinks[level] then
                level_sinks[level] = { sink_function };