window.Logger = (function() { 'use strict'; const LEVELS = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 }; let _level = 1; let _history = []; const MAX_HISTORY = 200; function format(level, msg) { const ts = new Date().toISOString(); return `[${ts}][${level}] ${msg}`; } function log(level, msg) { if (LEVELS[level] < _level) return; const entry = format(level, msg); _history.push(entry); if (_history.length > MAX_HISTORY) _history.shift(); if (level === 'ERROR' || level === 'WARN') { console[level === 'ERROR' ? 'error' : 'warn'](entry); } } return { LEVELS, get level() { return _level; }, set level(v) { _level = v; }, get history() { return _history.slice(); }, debug: (msg) => log('DEBUG', msg), info: (msg) => log('INFO', msg), warn: (msg) => log('WARN', msg), error: (msg) => log('ERROR', msg), }; })();