#! /usr/bin/env lua -- -- debugtool.lua -- Copyright (C) 2021 Shewer Lu -- -- Distributed under terms of the MIT license. -- -- puts(tag,...) -- DEBUG --> log.error -- WARN --> log.warning -- INFO --> log.info -- CONSOLE --> print -- -- ex: -- test.lua -- -- local puts = require 'tools/debugtool' -- --set tag D103 C102 -- local D103= DEBUG .. "103" -- local C102= CONSOLE .. "102" -- local C103= nil -- -- -- puts(ERROR,__FILE__(),__LINE__(),__FUNC__(), 1, 2 , 3 ) -- --> log.error( "error" .. tran_msg(...)) -- -- puts(DEBUG,__FILE__(),__LINE__(),__FUNC__(), 1, 2 , 3 ) -- --> log.error( DEBUG .. tran_msg(...)) -- -- puts(D103,__FILE__(),__LINE__(),__FUNC__(), 1 2 3) -- --> log.error("trace103" .. tran_msg(...) -- -- puts(C102,__FILE__(),__LINE__(),__FUNC__(), 1 2 3) -- --> print("console103" .. tran_msg(...) -- -- puts(C103,__FILE__(),__LINE__(),__FUNC__(), 1 2 3) -- --> pass -- -- -- -- puts(DEBUG,__FILE__(),__LINE__(),__FUNC__() , ...) -- puts(INFO,__FILE__(),__LINE__(),__FUNC__() , ...) -- -- global variable function __FILE__(n) n=n or 2 return debug.getinfo(n,'S').source end function __LINE__(n) n=n or 2 return debug.getinfo(n, 'l').currentline end function __FUNC__(n) n=n or 2 return debug.getinfo(n, 'n').name end INFO="log" WARN="warn" ERROR="error" DEBUG="trace" CONSOLE="console" local function tran_msg(...) local msg="\t" for i,k in next, {...} do msg = msg .. ": " .. tostring(k) end return msg end local function puts( tag , ...) if type(tag) ~= "string" then return end if INFO and tag:match("^" .. INFO) then (log and log.info or print)( tag .. tran_msg(...)) elseif WARN and tag:match("^" .. WARN) then (log and log.warning or print)(tag .. tran_msg(...)) elseif ERROR and tag:match("^" .. ERROR) then (log and log.error or print)(tag .. tran_msg(...)) elseif DEBUG and tag:match("^" .. DEBUG) then (log and log.error or print)(tag .. tran_msg(...)) elseif CONSOLE and tag:match( "^" .. CONSOLE ) then ( print)( tag .. tran_msg(...)) else return end end return puts