Software /
code /
prosody
Comparison
util/logger.lua @ 437:c1a720db2157
Nice enhancement for logging output
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 27 Nov 2008 03:06:29 +0000 |
parent | 360:e918c979ad1a |
child | 519:cccd610a0ef9 |
comparison
equal
deleted
inserted
replaced
436:979072fd3981 | 437:c1a720db2157 |
---|---|
1 | 1 |
2 local format = string.format; | 2 local format, rep = string.format, string.rep; |
3 local io_write = io.write; | |
3 local print = print; | 4 local print = print; |
4 local debug = debug; | 5 local debug = debug; |
5 local tostring = tostring; | 6 local tostring = tostring; |
7 local math_max = math.max; | |
6 | 8 |
7 local getstyle, getstring = require "util.termcolours".getstyle, require "util.termcolours".getstring; | 9 local getstyle, getstring = require "util.termcolours".getstyle, require "util.termcolours".getstring; |
8 local do_pretty_printing = not os.getenv("WINDIR"); | 10 local do_pretty_printing = not os.getenv("WINDIR"); |
9 | 11 |
10 module "logger" | 12 module "logger" |
16 logstyles["info"] = getstyle("bold"); | 18 logstyles["info"] = getstyle("bold"); |
17 logstyles["warn"] = getstyle("bold", "yellow"); | 19 logstyles["warn"] = getstyle("bold", "yellow"); |
18 logstyles["error"] = getstyle("bold", "red"); | 20 logstyles["error"] = getstyle("bold", "red"); |
19 end | 21 end |
20 | 22 |
23 local sourcewidth = 20; | |
24 | |
21 function init(name) | 25 function init(name) |
22 --name = nil; -- While this line is not commented, will automatically fill in file/line number info | 26 --name = nil; -- While this line is not commented, will automatically fill in file/line number info |
27 sourcewidth = math_max(#name+2, sourcewidth); | |
28 local namelen = #name; | |
23 return function (level, message, ...) | 29 return function (level, message, ...) |
24 if not name then | 30 if not name then |
25 local inf = debug.getinfo(3, 'Snl'); | 31 local inf = debug.getinfo(3, 'Snl'); |
26 level = level .. ","..tostring(inf.short_src):match("[^/]*$")..":"..inf.currentline; | 32 level = level .. ","..tostring(inf.short_src):match("[^/]*$")..":"..inf.currentline; |
27 end | 33 end |
28 if ... then | 34 if ... then |
29 print(name, getstring(logstyles[level], level), format(message, ...)); | 35 io_write(name, rep(" ", sourcewidth-namelen), getstring(logstyles[level], level), "\t", format(message, ...), "\n"); |
30 else | 36 else |
31 print(name, getstring(logstyles[level], level), message); | 37 io_write(name, rep(" ", sourcewidth-namelen), getstring(logstyles[level], level), "\t", message, "\n"); |
32 end | 38 end |
33 end | 39 end |
34 end | 40 end |
35 | 41 |
36 return _M; | 42 return _M; |