diff options
author | Matthew Wild <mwild1@gmail.com> | 2009-04-21 03:39:32 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2009-04-21 03:39:32 +0100 |
commit | 05e48b9fa681a98d6d9eb7acef86a60e28301b8f (patch) | |
tree | 7598259cc04afa499e7f7a69169971f8be231e5e /core/loggingmanager.lua | |
parent | e1120c6225c8ea63c7367edbfd6a7e471e15c50a (diff) | |
parent | 68c8c0a6b503af09c2b46f2285f6c7fd17d32f75 (diff) | |
download | prosody-05e48b9fa681a98d6d9eb7acef86a60e28301b8f.tar.gz prosody-05e48b9fa681a98d6d9eb7acef86a60e28301b8f.zip |
Merge with 0.4.1
Diffstat (limited to 'core/loggingmanager.lua')
-rw-r--r-- | core/loggingmanager.lua | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/core/loggingmanager.lua b/core/loggingmanager.lua new file mode 100644 index 00000000..973edbf4 --- /dev/null +++ b/core/loggingmanager.lua @@ -0,0 +1,49 @@ + +local format, rep = string.format, string.rep; +local io_write = io.write; +local pcall = pcall; +local debug = debug; +local tostring = tostring; +local math_max = math.max; + +local logger = require "util.logger"; + +-- Global log function, because some people are too +-- lazy to get their own +_G.log = logger.init("general"); + +-- Disable log output, needs to read from config +-- logger.setwriter(function () end); + +local getstyle, getstring = require "util.termcolours".getstyle, require "util.termcolours".getstring; +local do_pretty_printing = not os.getenv("WINDIR"); + +local logstyles = {}; + +--TODO: This should be done in config, but we don't have proper config yet +if do_pretty_printing then + logstyles["info"] = getstyle("bold"); + logstyles["warn"] = getstyle("bold", "yellow"); + logstyles["error"] = getstyle("bold", "red"); +end + +local sourcewidth = 20; +local math_max, rep = math.max, string.rep; +local function make_default_log_sink(level) + return function (name, _level, message, ...) + sourcewidth = math_max(#name+2, sourcewidth); + local namelen = #name; + if ... then + io_write(name, rep(" ", sourcewidth-namelen), getstring(logstyles[level], level), "\t", format(message, ...), "\n"); + else + io_write(name, rep(" ", sourcewidth-namelen), getstring(logstyles[level], level), "\t", message, "\n"); + end + end +end + +-- Set default sinks +logger.add_level_sink("debug", make_default_log_sink("debug")); +logger.add_level_sink("info", make_default_log_sink("info")); +logger.add_level_sink("warn", make_default_log_sink("warn")); +logger.add_level_sink("error", make_default_log_sink("error")); + |