@h1deya/langchain-mcp-tools
Version:
MCP To LangChain Tools Conversion Utility
60 lines (59 loc) • 2.08 kB
JavaScript
// Simple logger
var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["TRACE"] = 0] = "TRACE";
LogLevel[LogLevel["DEBUG"] = 1] = "DEBUG";
LogLevel[LogLevel["INFO"] = 2] = "INFO";
LogLevel[LogLevel["WARN"] = 3] = "WARN";
LogLevel[LogLevel["ERROR"] = 4] = "ERROR";
LogLevel[LogLevel["FATAL"] = 5] = "FATAL";
})(LogLevel || (LogLevel = {}));
const LOG_COLORS = {
[LogLevel.TRACE]: '\x1b[90m', // Gray
[LogLevel.DEBUG]: '\x1b[90m', // Gray
[LogLevel.INFO]: '\x1b[90m', // Gray
[LogLevel.WARN]: '\x1b[1;93m', // Bold bright yellow
[LogLevel.ERROR]: '\x1b[1;91m', // Bold bright red
[LogLevel.FATAL]: '\x1b[1;101m', // Red background, Bold text
};
const LOG_LEVEL_MAP = {
trace: LogLevel.TRACE,
debug: LogLevel.DEBUG,
info: LogLevel.INFO,
warn: LogLevel.WARN,
error: LogLevel.ERROR,
fatal: LogLevel.FATAL
};
class Logger {
level;
static RESET = '\x1b[0m';
constructor({ level = LogLevel.INFO } = {}) {
this.level = this.parseLogLevel(level);
}
parseLogLevel(level) {
if (typeof level === 'number')
return level;
return LOG_LEVEL_MAP[level.toLowerCase()];
}
log(level, ...args) {
if (level < this.level)
return;
const color = LOG_COLORS[level];
const levelStr = `[${LogLevel[level].toLowerCase()}]`;
console.log(`${color}${levelStr}${Logger.RESET}`, ...args.map(this.formatValue));
}
formatValue(value) {
if (value === null)
return 'null';
if (value === undefined)
return 'undefined';
return typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value);
}
trace(...args) { this.log(LogLevel.TRACE, ...args); }
debug(...args) { this.log(LogLevel.DEBUG, ...args); }
info(...args) { this.log(LogLevel.INFO, ...args); }
warn(...args) { this.log(LogLevel.WARN, ...args); }
error(...args) { this.log(LogLevel.ERROR, ...args); }
fatal(...args) { this.log(LogLevel.FATAL, ...args); }
}
export { Logger, LogLevel };