// ANSI color codes for terminal output const colors = { reset: "\x1b[0m", bright: "\x1b[1m", dim: "\x1b[2m", green: "\x1b[32m", yellow: "\x1b[33m", red: "\x1b[31m", blue: "\x1b[34m", }; export class MCPClientLogger { private readonly prefix: string; private readonly debugMode: boolean; constructor( prefix: string = "NextChat MCP Client", debugMode: boolean = false, ) { this.prefix = prefix; this.debugMode = debugMode; } info(message: any) { this.print(colors.blue, message); } success(message: any) { this.print(colors.green, message); } error(message: any) { this.print(colors.red, message); } warn(message: any) { this.print(colors.yellow, message); } debug(message: any) { if (this.debugMode) { this.print(colors.dim, message); } } /** * Format message to string, if message is object, convert to JSON string */ private formatMessage(message: any): string { return typeof message === "object" ? JSON.stringify(message, null, 2) : message; } /** * Print formatted message to console */ private print(color: string, message: any) { const formattedMessage = this.formatMessage(message); const logMessage = `${color}${colors.bright}[${this.prefix}]${colors.reset} ${formattedMessage}`; // 只使用 console.log,这样日志会显示在 Tauri 的终端中 console.log(logMessage); } }