@kya-os/mcp-i
Version:
COMING SOON:Production-ready MCP Identity with automatic registration, key rotation, and optimized performance
100 lines • 2.96 kB
JavaScript
/**
* Logger abstraction for MCP-I
* Allows consumers to control logging behavior
*/
/**
* No-op logger (default for production)
*/
export class SilentLogger {
debug() { }
info() { }
warn() { }
error() { }
}
/**
* Console logger (for development)
*/
export class ConsoleLogger {
prefix;
level;
constructor(prefix = '[MCP-I]', level = 'info') {
this.prefix = prefix;
this.level = level;
}
shouldLog(level) {
const levels = ['debug', 'info', 'warn', 'error', 'silent'];
const currentIndex = levels.indexOf(this.level);
const messageIndex = levels.indexOf(level);
return messageIndex >= currentIndex;
}
debug(message, ...args) {
if (this.shouldLog('debug')) {
console.log(`${this.prefix} [DEBUG]`, message, ...args);
}
}
info(message, ...args) {
if (this.shouldLog('info')) {
console.log(`${this.prefix} [INFO]`, message, ...args);
}
}
warn(message, ...args) {
if (this.shouldLog('warn')) {
console.warn(`${this.prefix} [WARN]`, message, ...args);
}
}
error(message, ...args) {
if (this.shouldLog('error')) {
// Enhanced error logging
if (args.length > 0 && args[0] instanceof Error) {
const error = args[0];
console.error(`${this.prefix} [ERROR]`, message);
console.error(`${this.prefix} [ERROR] Message:`, error.message);
// Show stack trace in debug mode
if (this.level === 'debug' && error.stack) {
console.error(`${this.prefix} [ERROR] Stack:`, error.stack);
}
// Log additional args if any
if (args.length > 1) {
console.error(`${this.prefix} [ERROR] Additional info:`, ...args.slice(1));
}
}
else {
console.error(`${this.prefix} [ERROR]`, message, ...args);
}
}
}
}
/**
* Logger factory
*/
export class LoggerFactory {
static instance = new SilentLogger();
static setLogger(logger) {
LoggerFactory.instance = logger;
}
static getLogger() {
return LoggerFactory.instance;
}
static createConsoleLogger(level) {
return new ConsoleLogger('[MCP-I]', level);
}
static createSilentLogger() {
return new SilentLogger();
}
static reset() {
LoggerFactory.instance = new SilentLogger();
}
}
// Export convenience function
export function getLogger(logLevel) {
// If logLevel is specified, create appropriate logger
if (logLevel === 'silent') {
return new SilentLogger();
}
else if (logLevel) {
return new ConsoleLogger('[MCP-I]', logLevel);
}
// Otherwise return the factory instance
return LoggerFactory.getLogger();
}
//# sourceMappingURL=logger.js.map