UNPKG

userface

Version:

Universal Data-Driven UI Engine with live data, validation, and multi-platform support

124 lines (123 loc) 3.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = void 0; // Логгер class Logger { constructor() { Object.defineProperty(this, "logs", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "maxLogs", { enumerable: true, configurable: true, writable: true, value: 1000 }); Object.defineProperty(this, "logLevel", { enumerable: true, configurable: true, writable: true, value: 'info' }); // По умолчанию } setLogLevel(level) { this.logLevel = level; } shouldLog(level) { const levels = ['debug', 'info', 'warn', 'error']; const configIndex = levels.indexOf(this.logLevel); const currentIndex = levels.indexOf(level); return currentIndex >= configIndex; } addLog(entry) { this.logs.push(entry); // Ограничиваем количество логов if (this.logs.length > this.maxLogs) { this.logs = this.logs.slice(-this.maxLogs); } // Выводим в консоль if (true) { // Всегда включено const prefix = `[${entry.context || 'UserFace'}]`; // const timestamp = new Date(entry.timestamp).toISOString(); switch (entry.level) { case 'debug': console.debug(`${prefix} ${entry.message}`, entry.data); break; case 'info': console.info(`${prefix} ${entry.message}`, entry.data); break; case 'warn': console.warn(`${prefix} ${entry.message}`, entry.data); break; case 'error': console.error(`${prefix} ${entry.message}`, entry.error || entry.data); break; } } } debug(message, context, data) { if (this.shouldLog('debug')) { this.addLog({ timestamp: new Date().toISOString(), level: 'debug', message, context, data }); } } info(message, context, data) { if (this.shouldLog('info')) { this.addLog({ timestamp: new Date().toISOString(), level: 'info', message, context, data }); } } warn(message, context, data) { if (this.shouldLog('warn')) { this.addLog({ timestamp: new Date().toISOString(), level: 'warn', message, context, data }); } } error(message, context, error, data) { if (this.shouldLog('error')) { this.addLog({ timestamp: new Date().toISOString(), level: 'error', message, context, data, error }); } } // Получение логов getLogs(level) { if (level) { return this.logs.filter(log => log.level === level); } return [...this.logs]; } // Очистка логов clear() { this.logs = []; } // Экспорт логов export() { return [...this.logs]; } } // Синглтон логгера exports.logger = new Logger();