@sailboat-computer/event-bus
Version:
Standardized event bus for sailboat computer v3 with resilience features and offline capabilities
132 lines • 3.4 kB
JavaScript
;
/**
* 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