userface
Version:
Universal Data-Driven UI Engine with live data, validation, and multi-platform support
124 lines (123 loc) • 3.69 kB
JavaScript
;
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();