tmueller@201
|
1 |
|
tmueller@201
|
2 |
--
|
tmueller@201
|
3 |
-- tek.lib.debug
|
tmueller@201
|
4 |
-- Written by Timm S. Mueller <tmueller at neoscientists.org>
|
tmueller@201
|
5 |
-- See copyright notice in COPYRIGHT
|
tmueller@201
|
6 |
--
|
tmueller@201
|
7 |
|
tmueller@201
|
8 |
local getinfo = require "debug".getinfo
|
tmueller@201
|
9 |
local date = require "os".date
|
tmueller@201
|
10 |
local stderr = require "io".stderr
|
tmueller@201
|
11 |
local tostring = tostring
|
tmueller@201
|
12 |
local ipairs = ipairs
|
tmueller@201
|
13 |
local type = type
|
tmueller@201
|
14 |
local unpack = unpack
|
tmueller@205
|
15 |
local select = select
|
tmueller@205
|
16 |
local time = os.time
|
tmueller@201
|
17 |
|
tmueller@201
|
18 |
module "tek.lib.debug"
|
tmueller@201
|
19 |
|
tmueller@201
|
20 |
level = 10 -- global default
|
tmueller@201
|
21 |
|
tmueller@201
|
22 |
function print(lvl, msg, ...)
|
tmueller@201
|
23 |
if level and lvl >= level then
|
tmueller@201
|
24 |
local t = getinfo(3, "lS")
|
tmueller@205
|
25 |
-- stderr:write(("(%02d %d %s:%d) "):format(lvl,
|
tmueller@205
|
26 |
-- time(), t.short_src, t.currentline))
|
tmueller@201
|
27 |
local arg = { }
|
tmueller@205
|
28 |
for i = 1, select('#', ...) do
|
tmueller@205
|
29 |
local v = select(i, ...)
|
tmueller@205
|
30 |
if not v then
|
tmueller@205
|
31 |
arg[i] = 0
|
tmueller@205
|
32 |
else
|
tmueller@205
|
33 |
arg[i] = type(v) ~= "number" and tostring(v) or v
|
tmueller@205
|
34 |
end
|
tmueller@201
|
35 |
end
|
tmueller@205
|
36 |
stderr:write(("(%02d %d %s:%d) " .. msg):format(lvl, time(), t.short_src, t.currentline, unpack(arg)) .. "\n")
|
tmueller@201
|
37 |
end
|
tmueller@201
|
38 |
end
|
tmueller@201
|
39 |
|
tmueller@205
|
40 |
function execute(lvl, func, ...)
|
tmueller@205
|
41 |
if level and lvl >= level then
|
tmueller@205
|
42 |
func(...)
|
tmueller@205
|
43 |
end
|
tmueller@201
|
44 |
end
|
tmueller@201
|
45 |
|
tmueller@205
|
46 |
function trace(msg, ...) print(2, msg, ...) end
|
tmueller@205
|
47 |
function note(msg, ...) print(3, msg, ...) end
|
tmueller@205
|
48 |
function info(msg, ...) print(4, msg, ...) end
|
tmueller@205
|
49 |
function warn(msg, ...) print(5, msg, ...) end
|
tmueller@205
|
50 |
function error(msg, ...) print(10, msg, ...) end
|
tmueller@205
|
51 |
function fail(msg, ...) print(20, msg, ...) end
|
tmueller@201
|
52 |
|
tmueller@205
|
53 |
function dotrace(msg, ...) execute(2, msg, ...) end
|
tmueller@205
|
54 |
function donote(msg, ...) execute(3, msg, ...) end
|
tmueller@205
|
55 |
function doinfo(msg, ...) execute(4, msg, ...) end
|
tmueller@205
|
56 |
function dowarn(msg, ...) execute(5, msg, ...) end
|
tmueller@205
|
57 |
function doerror(msg, ...) execute(10, msg, ...) end
|
tmueller@205
|
58 |
function dofail(msg, ...) execute(20, msg, ...) end
|