redis-smq-common
Version:
Provides essential components and utilities shared across RedisSMQ packages.
41 lines • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConsoleMessageFormatter = void 0;
class ConsoleMessageFormatter {
constructor(options = {}, namespace = []) {
this.namespaces = [];
this.levelColors = {
DEBUG: '\u001b[36m',
INFO: '\u001b[32m',
WARN: '\u001b[33m',
ERROR: '\u001b[31m',
};
this.resetColor = '\u001b[0m';
const { includeTimestamp, colorize, dateFormat } = options;
this.includeTimestamp = includeTimestamp !== false;
this.colorize = colorize !== false;
this.dateFormatter = dateFormat || ((date) => date.toISOString());
this.namespaces = namespace;
}
stripColorCodes(str) {
return str.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');
}
format(level, message) {
const timestamp = this.includeTimestamp
? `[${this.dateFormatter(new Date())}] `
: '';
const formattedMessage = typeof message === 'string' ? message : JSON.stringify(message);
const baseMessage = `${timestamp}${level}${this.formatNamespaces(this.namespaces)}: ${this.stripColorCodes(formattedMessage)}`;
if (this.colorize && this.levelColors[level]) {
return `${this.levelColors[level]}${baseMessage}${this.resetColor}`;
}
return baseMessage;
}
formatNamespaces(namespaces) {
if (!namespaces.length)
return '';
return ` (${namespaces.join(' / ')})`;
}
}
exports.ConsoleMessageFormatter = ConsoleMessageFormatter;
//# sourceMappingURL=console-message-formatter.js.map