@sailboat-computer/data-storage
Version:
Shared data storage library for sailboat computer v3
89 lines • 2.34 kB
JavaScript
;
/**
* Logger utility for the data storage package
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLogger = exports.ConsoleLogger = void 0;
/**
* Console logger implementation
*/
class ConsoleLogger {
/**
* Create a new console logger
* @param component Component name
* @param options Logger options
*/
constructor(component, options = {}) {
this.levelPriority = {
debug: 0,
info: 1,
warn: 2,
error: 3
};
this.component = component;
this.level = options.level || 'info';
}
/**
* Log a debug message
* @param message Message to log
* @param meta Additional metadata
*/
debug(message, meta) {
this.log('debug', message, meta);
}
/**
* Log an info message
* @param message Message to log
* @param meta Additional metadata
*/
info(message, meta) {
this.log('info', message, meta);
}
/**
* Log a warning message
* @param message Message to log
* @param meta Additional metadata
*/
warn(message, meta) {
this.log('warn', message, meta);
}
/**
* Log an error message
* @param message Message to log
* @param meta Additional metadata
*/
error(message, meta) {
this.log('error', message, meta);
}
/**
* Log a message
* @param level Log level
* @param message Message to log
* @param meta Additional metadata
*/
log(level, message, meta) {
if (this.levelPriority[level] < this.levelPriority[this.level]) {
return;
}
const timestamp = new Date().toISOString();
const formattedMessage = `[${timestamp}] [${level.toUpperCase()}] [${this.component}] ${message}`;
if (meta) {
console[level](formattedMessage, meta);
}
else {
console[level](formattedMessage);
}
}
}
exports.ConsoleLogger = ConsoleLogger;
/**
* Create a new logger
* @param component Component name
* @param options Logger options
* @returns Logger
*/
function createLogger(component, options = {}) {
return new ConsoleLogger(component, options);
}
exports.createLogger = createLogger;
//# sourceMappingURL=logger.js.map