UNPKG

redis-smq-common

Version:

Provides essential components and utilities shared across RedisSMQ packages.

40 lines 1.53 kB
export class ConsoleMessageFormatter { namespaces = []; includeTimestamp; colorize; dateFormatter; levelColors = { DEBUG: '\u001b[36m', INFO: '\u001b[32m', WARN: '\u001b[33m', ERROR: '\u001b[31m', }; resetColor = '\u001b[0m'; constructor(options = {}, namespace = []) { 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(' / ')})`; } } //# sourceMappingURL=console-message-formatter.js.map