Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
This commit is contained in:
@@ -1,37 +1,135 @@
|
||||
import {monitor} from "./frameloop";
|
||||
|
||||
/**
|
||||
* Centralized logging system with performance monitoring integration
|
||||
* @class Logger
|
||||
*/
|
||||
export class Logger {
|
||||
static enabled = true //import.meta.env.MODE !== 'production';
|
||||
/** @type {boolean} Enable/disable logging */
|
||||
static enabled = import.meta.env.MODE !== 'production';
|
||||
|
||||
/** @type {string} Log level: 'debug', 'info', 'warn', 'error', 'none' */
|
||||
static level = import.meta.env.VITE_LOG_LEVEL || (import.meta.env.MODE === 'production' ? 'error' : 'debug');
|
||||
|
||||
/** @type {Object} Log level priorities */
|
||||
static levels = {
|
||||
debug: 0,
|
||||
info: 1,
|
||||
warn: 2,
|
||||
error: 3,
|
||||
none: 99
|
||||
};
|
||||
|
||||
/**
|
||||
* Log debug messages (development only)
|
||||
* @param {...any} args - Arguments to log
|
||||
*/
|
||||
static debug(...args) {
|
||||
this._write('log', '[DEBUG]', args, 'debug');
|
||||
}
|
||||
|
||||
/**
|
||||
* Log general information
|
||||
* @param {...any} args - Arguments to log
|
||||
*/
|
||||
static log(...args) {
|
||||
this._write('log', '[LOG]', args);
|
||||
}
|
||||
|
||||
static warn(...args) {
|
||||
this._write('warn', '[WARN]', args)
|
||||
this._write('log', '[LOG]', args, 'info');
|
||||
}
|
||||
|
||||
/**
|
||||
* Log informational messages
|
||||
* @param {...any} args - Arguments to log
|
||||
*/
|
||||
static info(...args) {
|
||||
this._write('info', '[INFO]', args);
|
||||
this._write('info', '[INFO]', args, 'info');
|
||||
}
|
||||
|
||||
/**
|
||||
* Log warning messages
|
||||
* @param {...any} args - Arguments to log
|
||||
*/
|
||||
static warn(...args) {
|
||||
this._write('warn', '[WARN]', args, 'warn');
|
||||
}
|
||||
|
||||
/**
|
||||
* Log error messages
|
||||
* @param {...any} args - Arguments to log
|
||||
*/
|
||||
static error(...args) {
|
||||
this._write('error', '[ERROR]', args);
|
||||
this._write('error', '[ERROR]', args, 'error');
|
||||
}
|
||||
|
||||
static _write(consoleMethod, prefix, args) {
|
||||
if(!this.enabled) return;
|
||||
/**
|
||||
* Internal method to write log messages
|
||||
* @private
|
||||
* @param {string} consoleMethod - Console method to use
|
||||
* @param {string} prefix - Log level prefix
|
||||
* @param {Array} args - Arguments to log
|
||||
* @param {string} logLevel - Log level (debug, info, warn, error)
|
||||
*/
|
||||
static _write(consoleMethod, prefix, args, logLevel = 'info') {
|
||||
if (!this.enabled) return;
|
||||
|
||||
// Check if this log level should be output
|
||||
const currentLevelPriority = this.levels[this.level] || this.levels.info;
|
||||
const messageLevelPriority = this.levels[logLevel] || this.levels.info;
|
||||
|
||||
if (messageLevelPriority < currentLevelPriority) {
|
||||
return;
|
||||
}
|
||||
|
||||
const date = new Date();
|
||||
const timestamp = date.toLocaleTimeString('de-DE');
|
||||
|
||||
const msg = `${prefix} [${timestamp}] ${args.map(a => typeof a === 'object' ? JSON.stringify(a) : a).join(' ')}`;
|
||||
const msg = `${prefix} [${timestamp}] ${args.map(a => {
|
||||
if (a instanceof Error) {
|
||||
return `${a.name}: ${a.message}\n${a.stack || ''}`;
|
||||
} else if (typeof a === 'object' && a !== null) {
|
||||
try {
|
||||
return JSON.stringify(a);
|
||||
} catch (e) {
|
||||
return '[Circular Object]';
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}).join(' ')}`;
|
||||
|
||||
if(typeof console[consoleMethod] === 'function') {
|
||||
console[consoleMethod](msg);
|
||||
}
|
||||
|
||||
monitor?.log(msg)
|
||||
// Safe monitor logging
|
||||
if (monitor && typeof monitor.log === 'function') {
|
||||
try {
|
||||
monitor.log(msg);
|
||||
} catch (e) {
|
||||
// Silent fail if monitor fails
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set log level dynamically
|
||||
* @param {string} level - New log level (debug, info, warn, error, none)
|
||||
*/
|
||||
static setLevel(level) {
|
||||
if (this.levels.hasOwnProperty(level)) {
|
||||
this.level = level;
|
||||
this.info(`[Logger] Log level set to: ${level}`);
|
||||
} else {
|
||||
this.warn(`[Logger] Invalid log level: ${level}. Valid levels:`, Object.keys(this.levels));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable/disable logging
|
||||
* @param {boolean} enabled - Enable or disable logging
|
||||
*/
|
||||
static setEnabled(enabled) {
|
||||
this.enabled = !!enabled;
|
||||
if (enabled) {
|
||||
console.log('[Logger] Logging enabled');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user