UNPKG

smart-saga-pattern

Version:

A library implementing the Saga pattern for microservice architecture

113 lines (112 loc) 3.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoggerFactory = exports.ConsoleLogger = exports.LogLevel = void 0; /** * Log levels */ var LogLevel; (function (LogLevel) { LogLevel["DEBUG"] = "DEBUG"; LogLevel["INFO"] = "INFO"; LogLevel["WARN"] = "WARN"; LogLevel["ERROR"] = "ERROR"; })(LogLevel || (exports.LogLevel = LogLevel = {})); /** * Console implementation of SagaLogger */ class ConsoleLogger { /** * Creates a new ConsoleLogger * @param options Logger options */ constructor(options = {}) { this.LOG_LEVEL_PRIORITY = { [LogLevel.DEBUG]: 0, [LogLevel.INFO]: 1, [LogLevel.WARN]: 2, [LogLevel.ERROR]: 3 }; this.level = options.level || LogLevel.INFO; this.includeTimestamp = options.includeTimestamp !== undefined ? options.includeTimestamp : true; } /** * Logs a debug message * @param message Message to log * @param meta Optional metadata */ debug(message, meta) { this.log(LogLevel.DEBUG, message, undefined, meta); } /** * Logs an info message * @param message Message to log * @param meta Optional metadata */ info(message, meta) { this.log(LogLevel.INFO, message, undefined, meta); } /** * Logs a warning message * @param message Message to log * @param meta Optional metadata */ warn(message, meta) { this.log(LogLevel.WARN, message, undefined, meta); } /** * Logs an error message * @param message Message to log * @param error Optional error * @param meta Optional metadata */ error(message, error, meta) { this.log(LogLevel.ERROR, message, error, meta); } /** * Logs a message * @param level Log level * @param message Message to log * @param error Optional error * @param meta Optional metadata */ log(level, message, error, meta) { if (this.LOG_LEVEL_PRIORITY[level] < this.LOG_LEVEL_PRIORITY[this.level]) { return; } const timestamp = this.includeTimestamp ? new Date().toISOString() : ''; const prefix = this.includeTimestamp ? `[${timestamp}] [${level}]` : `[${level}]`; let logMessage = `${prefix} ${message}`; if (error) { logMessage += `\nError: ${error.message}\n${error.stack}`; } if (meta) { logMessage += `\nMetadata: ${JSON.stringify(meta, null, 2)}`; } switch (level) { case LogLevel.DEBUG: case LogLevel.INFO: console.log(logMessage); break; case LogLevel.WARN: console.warn(logMessage); break; case LogLevel.ERROR: console.error(logMessage); break; } } } exports.ConsoleLogger = ConsoleLogger; /** * Factory for creating SagaLogger instances */ class LoggerFactory { /** * Creates a console logger * @param options Logger options */ static createConsoleLogger(options = {}) { return new ConsoleLogger(options); } } exports.LoggerFactory = LoggerFactory;