cgi-bin/tek/lib/debug.lua
author Timm S. Mueller <tmueller@neoscientists.org>
Sat, 24 Nov 2007 20:47:22 +0100
changeset 205 4b7e44d9cc88
parent 201 d52b05a9fe9c
child 226 f16ff668a409
permissions -rw-r--r--
More robust debugging facilities
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