mcard-js
Version:
A JavaScript implementation of MCard - A data model for persistently storing content with cryptographic hashing and timestamping
80 lines (73 loc) • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.Logger = void 0;
/**
* Simple logging service with configurable log levels
*/
class Logger {
/**
* Create a new logger instance
* @param {string} [level='info'] - Logging level
*/
constructor(level = 'info') {
this.level = level.toLowerCase();
this.levels = ['error', 'warn', 'info', 'debug'];
}
/**
* Check if a log level is enabled
* @param {string} level - Log level to check
* @returns {boolean} Whether the log level is enabled
*/
isLevelEnabled(level) {
const currentLevelIndex = this.levels.indexOf(this.level);
const checkLevelIndex = this.levels.indexOf(level);
return checkLevelIndex <= currentLevelIndex;
}
/**
* Log an error message
* @param {string} message - Message to log
* @param {Object} [metadata] - Optional metadata
*/
error(message, metadata = {}) {
if (this.isLevelEnabled('error')) {
console.error(`[ERROR] ${message}`, metadata);
}
}
/**
* Log a warning message
* @param {string} message - Message to log
* @param {Object} [metadata] - Optional metadata
*/
warn(message, metadata = {}) {
if (this.isLevelEnabled('warn')) {
console.warn(`[WARN] ${message}`, metadata);
}
}
/**
* Log an info message
* @param {string} message - Message to log
* @param {Object} [metadata] - Optional metadata
*/
info(message, metadata = {}) {
if (this.isLevelEnabled('info')) {
console.log(`[INFO] ${message}`, metadata);
}
}
/**
* Log a debug message
* @param {string} message - Message to log
* @param {Object} [metadata] - Optional metadata
*/
debug(message, metadata = {}) {
if (this.isLevelEnabled('debug')) {
console.debug(`[DEBUG] ${message}`, metadata);
}
}
}
// Create a default logger instance using environment variable
exports.Logger = Logger;
const logger = new Logger(process.env.LOG_LEVEL || 'info');
var _default = exports.default = logger;
//# sourceMappingURL=logger.js.map