Software / code / verse
Comparison
init.lua @ 238:9b6fca5d9a02
verse, squishy: Port to Prosody's util.logger. Adds new function, verse.set_log_handler(handler, levels).
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 27 Nov 2011 22:45:26 +0000 |
| parent | 237:d158c97556b4 |
| child | 239:65a0d3fcbbad |
comparison
equal
deleted
inserted
replaced
| 237:d158c97556b4 | 238:9b6fca5d9a02 |
|---|---|
| 20 verse.plugins = {}; | 20 verse.plugins = {}; |
| 21 | 21 |
| 22 function verse.new(logger, base) | 22 function verse.new(logger, base) |
| 23 local t = setmetatable(base or {}, stream); | 23 local t = setmetatable(base or {}, stream); |
| 24 t.id = tostring(t):match("%x*$"); | 24 t.id = tostring(t):match("%x*$"); |
| 25 t:set_logger(logger or verse.log, true); | 25 t.logger = logger or verse.new_logger("stream"..t.id); |
| 26 t.events = events.new(); | 26 t.events = events.new(); |
| 27 t.plugins = {}; | 27 t.plugins = {}; |
| 28 return t; | 28 return t; |
| 29 end | 29 end |
| 30 | 30 |
| 31 verse.add_task = require "util.timer".add_task; | 31 verse.add_task = require "util.timer".add_task; |
| 32 | 32 |
| 33 verse.logger = logger.init; -- Deprecated | 33 verse.logger = logger.init; -- COMPAT: Deprecated |
| 34 verse.new_logger = logger.init; | 34 verse.new_logger = logger.init; |
| 35 verse.log = verse.logger("verse"); | 35 verse.log = verse.logger("verse"); |
| 36 | 36 |
| 37 function verse.set_logger(logger) | 37 function verse.set_log_handler(log_handler, levels) |
| 38 verse.log = logger; | 38 levels = levels or { "debug", "info", "warn", "error" }; |
| 39 server.setlogger(logger); | 39 logger.reset(); |
| 40 end | 40 for i, level in ipairs(levels) do |
| 41 | 41 logger.add_level_sink(level, log_handler); |
| 42 function verse.filter_log(levels, logger) | |
| 43 local level_set = {}; | |
| 44 for _, level in ipairs(levels) do | |
| 45 level_set[level] = true; | |
| 46 end | 42 end |
| 47 return function (level, name, ...) | |
| 48 if level_set[level] then | |
| 49 return logger(level, name, ...); | |
| 50 end | |
| 51 end; | |
| 52 end | 43 end |
| 53 | 44 |
| 54 local function error_handler(err) | 45 local function error_handler(err) |
| 55 verse.log("error", "Error: %s", err); | 46 verse.log("error", "Error: %s", err); |
| 56 verse.log("error", "Traceback: %s", debug.traceback()); | 47 verse.log("error", "Traceback: %s", debug.traceback()); |
| 112 on_disconnect(conn, reason); | 103 on_disconnect(conn, reason); |
| 113 end | 104 end |
| 114 | 105 |
| 115 -- Logging functions | 106 -- Logging functions |
| 116 function stream:debug(...) | 107 function stream:debug(...) |
| 117 if self.logger and self.log.debug then | 108 return self.logger("debug", ...); |
| 118 return self.logger("debug", ...); | |
| 119 end | |
| 120 end | 109 end |
| 121 | 110 |
| 122 function stream:warn(...) | 111 function stream:warn(...) |
| 123 if self.logger and self.log.warn then | 112 return self.logger("warn", ...); |
| 124 return self.logger("warn", ...); | |
| 125 end | |
| 126 end | 113 end |
| 127 | 114 |
| 128 function stream:error(...) | 115 function stream:error(...) |
| 129 if self.logger and self.log.error then | 116 return self.logger("error", ...); |
| 130 return self.logger("error", ...); | |
| 131 end | |
| 132 end | |
| 133 | |
| 134 function stream:set_logger(logger, levels) | |
| 135 local old_logger = self.logger; | |
| 136 if logger then | |
| 137 self.logger = logger; | |
| 138 end | |
| 139 if levels then | |
| 140 if levels == true then | |
| 141 levels = { "debug", "info", "warn", "error" }; | |
| 142 end | |
| 143 self.log = {}; | |
| 144 for _, level in ipairs(levels) do | |
| 145 self.log[level] = true; | |
| 146 end | |
| 147 end | |
| 148 return old_logger; | |
| 149 end | |
| 150 | |
| 151 function stream_mt:set_log_levels(levels) | |
| 152 self:set_logger(nil, levels); | |
| 153 end | 117 end |
| 154 | 118 |
| 155 -- Event handling | 119 -- Event handling |
| 156 function stream:event(name, ...) | 120 function stream:event(name, ...) |
| 157 self:debug("Firing event: "..tostring(name)); | 121 self:debug("Firing event: "..tostring(name)); |