@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 };