2025-02-09 14:58:31 -05:00
|
|
|
|
import chalk from 'chalk';
|
|
|
|
|
|
|
2025-03-25 11:17:26 -04:00
|
|
|
|
/**
|
|
|
|
|
|
* Enhanced logger utility with timestamps and consistent formatting
|
|
|
|
|
|
*/
|
2025-02-09 14:58:31 -05:00
|
|
|
|
class Logger {
|
2025-03-25 11:17:26 -04:00
|
|
|
|
/**
|
|
|
|
|
|
* Create a new Logger instance
|
|
|
|
|
|
* @param {string} moduleName - Name of the module for context
|
|
|
|
|
|
*/
|
2025-02-09 14:58:31 -05:00
|
|
|
|
constructor(moduleName) {
|
2025-03-25 11:17:26 -04:00
|
|
|
|
if (typeof moduleName !== 'string') {
|
|
|
|
|
|
throw new Error('Logger requires a string moduleName');
|
|
|
|
|
|
}
|
2025-02-09 14:58:31 -05:00
|
|
|
|
this.moduleName = moduleName;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-25 11:17:26 -04:00
|
|
|
|
/**
|
|
|
|
|
|
* Get formatted timestamp
|
|
|
|
|
|
* @private
|
|
|
|
|
|
*/
|
|
|
|
|
|
#getTimestamp() {
|
|
|
|
|
|
return new Date().toISOString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Format log message with consistent structure
|
|
|
|
|
|
* @private
|
|
|
|
|
|
* @param {string} emoji - Log level emoji
|
|
|
|
|
|
* @param {string} level - Log level name
|
|
|
|
|
|
* @param {string} message - Message to log
|
|
|
|
|
|
*/
|
|
|
|
|
|
#formatMessage(emoji, level, message) {
|
|
|
|
|
|
const timestamp = this.#getTimestamp();
|
|
|
|
|
|
return `${chalk.gray(timestamp)} ${emoji} ${chalk.cyan(`[${this.moduleName}]`)} ${level}: ${message}`;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Log informational message
|
|
|
|
|
|
* @param {string} message - Message to log
|
|
|
|
|
|
*/
|
2025-02-09 14:58:31 -05:00
|
|
|
|
log(message) {
|
2025-03-25 11:17:26 -04:00
|
|
|
|
console.log(this.#formatMessage(chalk.blue('📝'), 'LOG', message));
|
2025-02-09 14:58:31 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-25 11:17:26 -04:00
|
|
|
|
/**
|
|
|
|
|
|
* Log error message
|
|
|
|
|
|
* @param {string|Error} message - Error message or Error object
|
|
|
|
|
|
*/
|
2025-02-09 14:58:31 -05:00
|
|
|
|
error(message) {
|
2025-03-25 11:17:26 -04:00
|
|
|
|
const msg = message instanceof Error ? message.stack || message.message : message;
|
|
|
|
|
|
console.error(this.#formatMessage(chalk.red('❌'), 'ERROR', msg));
|
2025-02-09 14:58:31 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-25 11:17:26 -04:00
|
|
|
|
/**
|
|
|
|
|
|
* Log warning message
|
|
|
|
|
|
* @param {string} message - Warning message
|
|
|
|
|
|
*/
|
2025-02-09 14:58:31 -05:00
|
|
|
|
warn(message) {
|
2025-03-25 11:17:26 -04:00
|
|
|
|
console.warn(this.#formatMessage(chalk.yellow('⚠️'), 'WARN', message));
|
2025-02-09 14:58:31 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-25 11:17:26 -04:00
|
|
|
|
/**
|
|
|
|
|
|
* Log info message
|
|
|
|
|
|
* @param {string} message - Info message
|
|
|
|
|
|
*/
|
2025-02-09 14:58:31 -05:00
|
|
|
|
info(message) {
|
2025-03-25 11:17:26 -04:00
|
|
|
|
console.info(this.#formatMessage(chalk.green('ℹ️'), 'INFO', message));
|
2025-02-09 14:58:31 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-25 11:17:26 -04:00
|
|
|
|
/**
|
|
|
|
|
|
* Log debug message
|
|
|
|
|
|
* @param {string} message - Debug message
|
|
|
|
|
|
*/
|
2025-02-09 14:58:31 -05:00
|
|
|
|
debug(message) {
|
2025-03-25 11:17:26 -04:00
|
|
|
|
console.debug(this.#formatMessage(chalk.gray('🔧'), 'DEBUG', message));
|
2025-02-09 14:58:31 -05:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default Logger;
|