logging = {} local loglevels={ ["SILENT"]=0, ["FATAL"]=1, ["ERROR"]=2, ["WARN"]=3, ["INFO"]=4, ["DEBUG"]=5, ["TRACE"]=6 } local loglevels_index={} local loglevels_abbrev={} for k, v in pairs(loglevels) do loglevels_index[v]=k loglevels_abbrev[k:sub(1,1)]=v end local loglevel ---@deprecated use loglevel int local loglevel_str="INFO" ---@param level string|integer function logging.set(level) -- +---we can do this -- | becasue each one has -- v a unique letter loglevel=loglevels[level] or loglevels_abbrev[tostring(level):sub(1,1):upper()] or ((level >=0 and level <=6) and level) or loglevel end ---deprecated wrapper for logging.set, it is intentionally a wrapper instead of --an alias because LuaLS docs don't work without doing this ---@deprecated user logging.set instead, more terse function logging.setLogLevel(level) return logging.set(level) end -- default log level logging.set("INFO") local function printLog(severity, ...) if (loglevel) >= severity then log("[" .. loglevels_index[severity] .. "] ", ...) end end function logging.fatal(...) printLog(1, ...) end function logging.error(...) printLog(2, ...) end function logging.warn(...) printLog(3, ...) end function logging.info(...) printLog(4, ...) end function logging.debug(...) printLog(5, ...) end function logging.trace(...) printLog(6, ...) end function logging.test(...) printLog(1, ...) end return logging