Module:Log globals explained

local mt = getmetatable(_G) or

local function print(val) if type(val)

"table" then local printout = local i = 1 for k, v in pairs(val) do table.insert(printout, ("[%s] = %s"):format(tostring(k), tostring(v))) i = i + 1 if i > 5 then table.insert(printout, "...") break end end printout = table.insert(printout, 1, "") return table.concat(printout) elseif type(val)

"string" then return '"' .. val .. '"' else return tostring(val) endend

mt.__newindex = function (self, key, value) if key ~= "arg" then mw.log("Global variable " .. print(key) .. " was set to " .. print(value) .. " somewhere:", debug.traceback("", 2)) end return rawset(self, key, value)end

mt.__index = function (self, key) if key ~= "arg" then mw.log("Nil global variable " .. print(key) .. " was read somewhere:", debug.traceback("", 2)) end return rawget(self, key)end

setmetatable(_G, mt)