Software /
code /
verse
Comparison
init.lua @ 44:37396504de5f
verse: Multiple changes to allow controlling logging for both verse and streams
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 06 Jan 2010 17:42:37 +0000 |
parent | 42:6006e6bb1c28 |
child | 45:50a2e4fb0a16 |
comparison
equal
deleted
inserted
replaced
43:a33036b7e5ab | 44:37396504de5f |
---|---|
12 stream.__index = stream; | 12 stream.__index = stream; |
13 stream_mt = stream; | 13 stream_mt = stream; |
14 | 14 |
15 verse.plugins = {}; | 15 verse.plugins = {}; |
16 | 16 |
17 function verse.new(base) | 17 function verse.new(logger, base) |
18 local t = base or {}; | 18 local t = setmetatable(base or {}, stream); |
19 t.id = tostring(t):match("%x*$"); | 19 t.id = tostring(t):match("%x*$"); |
20 t.logger = logger.init(t.id); | 20 t:set_logger(logger, true); |
21 t.events = events.new(); | 21 t.events = events.new(); |
22 return setmetatable(t, stream); | 22 return t; |
23 end | 23 end |
24 | 24 |
25 verse.add_task = require "util.timer".add_task; | 25 verse.add_task = require "util.timer".add_task; |
26 | 26 |
27 function verse.loop() | 27 function verse.loop() |
28 return server.loop(); | 28 return server.loop(); |
29 end | |
30 | |
31 verse.logger = logger.init; | |
32 | |
33 function verse.set_logger(logger) | |
34 server.setlogger(logger); | |
29 end | 35 end |
30 | 36 |
31 function stream:connect(connect_host, connect_port) | 37 function stream:connect(connect_host, connect_port) |
32 connect_host = connect_host or "localhost"; | 38 connect_host = connect_host or "localhost"; |
33 connect_port = tonumber(connect_port) or 5222; | 39 connect_port = tonumber(connect_port) or 5222; |
53 self.send = function (_, data) return w(conn, t(data)); end | 59 self.send = function (_, data) return w(conn, t(data)); end |
54 end | 60 end |
55 | 61 |
56 -- Logging functions | 62 -- Logging functions |
57 function stream:debug(...) | 63 function stream:debug(...) |
58 return self.logger("debug", ...); | 64 if self.logger and self.log.debug then |
65 return self.logger("debug", ...); | |
66 end | |
59 end | 67 end |
60 | 68 |
61 function stream:warn(...) | 69 function stream:warn(...) |
62 return self.logger("warn", ...); | 70 if self.logger and self.log.warn then |
71 return self.logger("warn", ...); | |
72 end | |
63 end | 73 end |
64 | 74 |
65 function stream:error(...) | 75 function stream:error(...) |
66 return self.logger("error", ...); | 76 if self.logger and self.log.error then |
77 return self.logger("error", ...); | |
78 end | |
79 end | |
80 | |
81 function stream:set_logger(logger, levels) | |
82 local old_logger = self.logger; | |
83 if logger then | |
84 self.logger = logger; | |
85 end | |
86 if levels then | |
87 if levels == true then | |
88 levels = { "debug", "info", "warn", "error" }; | |
89 end | |
90 self.log = {}; | |
91 for _, level in ipairs(levels) do | |
92 self.log[level] = true; | |
93 end | |
94 end | |
95 return old_logger; | |
67 end | 96 end |
68 | 97 |
69 -- Event handling | 98 -- Event handling |
70 function stream:event(name, ...) | 99 function stream:event(name, ...) |
71 self:debug("Firing event: "..tostring(name)); | 100 self:debug("Firing event: "..tostring(name)); |