loggingmanager: Re-read 'debug' option on reload.
[prosody.git] / core / loggingmanager.lua
index 96cd32dc55dbeec8f3a03311587131d1a511d469..460afeaf9ce77d8ec264cd06f5ee83b633c08fb7 100644 (file)
 local format, rep = string.format, string.rep;
 local pcall = pcall;
 local debug = debug;
-local tostring, setmetatable, rawset, pairs, ipairs, type = 
+local tostring, setmetatable, rawset, pairs, ipairs, type =
        tostring, setmetatable, rawset, pairs, ipairs, type;
 local io_open, io_write = io.open, io.write;
 local math_max, rep = math.max, string.rep;
 local os_date, os_getenv = os.date, os.getenv;
-local getstyle, getstring = require "util.termcolours".getstyle, require "util.termcolours".getstring;
+local getstyle, setstyle = require "util.termcolours".getstyle, require "util.termcolours".setstyle;
 
 if os.getenv("__FLUSH_LOG") then
        local io_flush = io.flush;
@@ -27,8 +27,6 @@ local config = require "core.configmanager";
 local logger = require "util.logger";
 local prosody = prosody;
 
-local debug_mode = config.get("*", "core", "debug");
-
 _G.log = logger.init("general");
 
 module "loggingmanager"
@@ -166,9 +164,11 @@ function reload_logging()
        
        logger.reset();
 
+       local debug_mode = config.get("*", "core", "debug");
+
        default_logging = { { to = "console" , levels = { min = (debug_mode and "debug") or "info" } } };
        default_file_logging = {
-               { to = "file", levels = { min = (debug_mode and "debug") or "info" }, timestamps = true } 
+               { to = "file", levels = { min = (debug_mode and "debug") or "info" }, timestamps = true }
        };
        default_timestamp = "%b %d %H:%M:%S";
 
@@ -217,7 +217,7 @@ function log_sink_types.stdout()
 end
 
 do
-       local do_pretty_printing = not os_getenv("WINDIR");
+       local do_pretty_printing = true;
        
        local logstyles = {};
        if do_pretty_printing then
@@ -244,10 +244,14 @@ do
                        if timestamps then
                                io_write(os_date(timestamps), " ");
                        end
+                       io_write(name, rep(" ", sourcewidth-namelen));
+                       setstyle(logstyles[level]);
+                       io_write(level);
+                       setstyle();
                        if ... then
-                               io_write(name, rep(" ", sourcewidth-namelen), getstring(logstyles[level], level), "\t", format(message, ...), "\n");
+                               io_write("\t", format(message, ...), "\n");
                        else
-                               io_write(name, rep(" ", sourcewidth-namelen), getstring(logstyles[level], level), "\t", message, "\n");
+                               io_write("\t", message, "\n");
                        end
                end
        end
@@ -262,12 +266,6 @@ function log_sink_types.file(config)
        end
        local write, flush = logfile.write, logfile.flush;
 
-       prosody.events.add_handler("logging-reloading", function ()
-                       if logfile then
-                               logfile:close();
-                       end
-               end);
-
        local timestamps = config.timestamps;
 
        if timestamps == nil or timestamps == true then