46 lines
1.3 KiB
Lua
46 lines
1.3 KiB
Lua
-- lib/log.lua — Structured logging for CC:Tweaked programs
|
|
-- Usage:
|
|
-- local log = dofile("lib/log.lua")
|
|
-- log.info("SMELT", "Loaded %d recipes", count)
|
|
-- log.warn("NET", "No modem found")
|
|
-- log.setLevel("DEBUG") -- show everything
|
|
--
|
|
-- Levels: DEBUG < INFO < WARN < ERROR
|
|
-- Default level: INFO (suppresses DEBUG)
|
|
|
|
local LEVELS = { DEBUG = 1, INFO = 2, WARN = 3, ERROR = 4 }
|
|
local minLevel = LEVELS.INFO
|
|
|
|
local log = {}
|
|
|
|
--- Set minimum log level (string: "DEBUG", "INFO", "WARN", "ERROR")
|
|
function log.setLevel(level)
|
|
minLevel = LEVELS[level] or LEVELS.INFO
|
|
end
|
|
|
|
--- Get the current minimum level name
|
|
function log.getLevel()
|
|
for name, val in pairs(LEVELS) do
|
|
if val == minLevel then return name end
|
|
end
|
|
return "INFO"
|
|
end
|
|
|
|
local function emit(levelName, tag, msg, ...)
|
|
if LEVELS[levelName] < minLevel then return end
|
|
local text
|
|
if select("#", ...) > 0 then
|
|
text = string.format(msg, ...)
|
|
else
|
|
text = msg
|
|
end
|
|
print(string.format("[%s][%s] %s", levelName, tag, text))
|
|
end
|
|
|
|
function log.debug(tag, msg, ...) emit("DEBUG", tag, msg, ...) end
|
|
function log.info(tag, msg, ...) emit("INFO", tag, msg, ...) end
|
|
function log.warn(tag, msg, ...) emit("WARN", tag, msg, ...) end
|
|
function log.error(tag, msg, ...) emit("ERROR", tag, msg, ...) end
|
|
|
|
return log
|