/**
* Logging utility for MCP server
* Provides structured logging with levels
*/
export enum LogLevel {
DEBUG = 0,
INFO = 1,
WARN = 2,
ERROR = 3,
SILENT = 4,
}
class Logger {
private level: LogLevel;
constructor(level: LogLevel = LogLevel.INFO) {
this.level = level;
}
setLevel(level: LogLevel): void {
this.level = level;
}
debug(message: string, ...args: unknown[]): void {
if (this.level <= LogLevel.DEBUG) {
console.error('[DEBUG]', message, ...args);
}
}
info(message: string, ...args: unknown[]): void {
if (this.level <= LogLevel.INFO) {
console.error('[INFO]', message, ...args);
}
}
warn(message: string, ...args: unknown[]): void {
if (this.level <= LogLevel.WARN) {
console.error('[WARN]', message, ...args);
}
}
error(message: string, ...args: unknown[]): void {
if (this.level <= LogLevel.ERROR) {
console.error('[ERROR]', message, ...args);
}
}
}
// Singleton instance
export const logger = new Logger(
process.env.LOG_LEVEL ? parseInt(process.env.LOG_LEVEL) : LogLevel.INFO
);