UNPKG

@sailboat-computer/event-bus

Version:

Standardized event bus for sailboat computer v3 with resilience features and offline capabilities

132 lines 3.4 kB
"use strict"; /** * Simple logger for the event bus */ Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.createLogger = exports.Logger = 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 = {})); /** * Default logger configuration */ const DEFAULT_CONFIG = { level: LogLevel.INFO, serviceName: 'event-bus', includeTimestamps: true }; /** * Simple logger for the event bus */ class Logger { /** * Create a new logger * * @param config - Logger configuration */ constructor(config = {}) { this.config = { ...DEFAULT_CONFIG, ...config }; } /** * Log a debug message * * @param message - Message to log * @param data - Additional data to log */ debug(message, data) { this.log(LogLevel.DEBUG, message, data); } /** * Log an info message * * @param message - Message to log * @param data - Additional data to log */ info(message, data) { this.log(LogLevel.INFO, message, data); } /** * Log a warning message * * @param message - Message to log * @param data - Additional data to log */ warn(message, data) { this.log(LogLevel.WARN, message, data); } /** * Log an error message * * @param message - Message to log * @param error - Error to log * @param data - Additional data to log */ error(message, error, data) { const errorData = error ? { name: error.name, message: error.message, stack: error.stack, ...data } : data; this.log(LogLevel.ERROR, message, errorData); } /** * Log a message * * @param level - Log level * @param message - Message to log * @param data - Additional data to log */ log(level, message, data) { // Skip if level is below configured level if (!this.shouldLog(level)) { return; } const timestamp = this.config.includeTimestamps ? new Date().toISOString() : ''; const prefix = `[${timestamp}] [${this.config.serviceName}] [${level.toUpperCase()}]`; if (data) { console.log(`${prefix} ${message}`, data); } else { console.log(`${prefix} ${message}`); } } /** * Check if a log level should be logged * * @param level - Log level to check * @returns Whether the log level should be logged */ shouldLog(level) { const levels = [LogLevel.DEBUG, LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR]; const configLevelIndex = levels.indexOf(this.config.level); const logLevelIndex = levels.indexOf(level); return logLevelIndex >= configLevelIndex; } } exports.Logger = Logger; /** * Create a new logger * * @param config - Logger configuration * @returns Logger instance */ function createLogger(config = {}) { return new Logger(config); } exports.createLogger = createLogger; /** * Default logger instance */ exports.logger = createLogger(); //# sourceMappingURL=logger.js.map