local Log = require "cave.log" local Meta = require "cave.meta" local validate = Meta.validate local Str = Meta.String ---@class cave.Logger ---@field prefix string local Logger = Meta.derive "Logger" ---@param prefix string function Logger:init(prefix) self.prefix = prefix end ---@param prefix string ---@return cave.Logger function Logger.new(prefix) validate { prefix = { prefix, Str } } local logger = setmetatable({}, Logger) logger:init(prefix) return logger end ---@param msg string ---@param ...? any function Logger:dbg(msg, ...) Log.dbg(self.prefix .. msg, ...) end ---@param msg string ---@param ...? any function Logger:err(msg, ...) Log.err(self.prefix .. msg, ...) end ---@param msg string ---@param ...? any function Logger:inf(msg, ...) Log.inf(self.prefix .. msg, ...) end ---@param msg string ---@param ...? any function Logger:warn(msg, ...) Log.warn(self.prefix .. msg, ...) end return Logger