UNPKG

mcp-connector

Version:

MCP Remote Proxy Server for Streamable HTTP with OAuth Support.

80 lines 2.84 kB
import { appendFileSync, existsSync, mkdirSync } from "fs"; import { join } from "path"; import { homedir } from "os"; import { DEBUG_MODE } from "../constants/constants.js"; export class FileLogger { logPath; logFile; constructor(serverName, urlHash) { if (serverName === "default") { this.logPath = join(homedir(), ".mcp-connector"); this.logFile = join(this.logPath, `mcp-connector-${new Date().toISOString().split("T")[0]}.log`); } else { this.logPath = join(homedir(), ".mcp-connector", urlHash); this.logFile = join(this.logPath, `${serverName}.log`); } this.ensureLogDirectoryExists(); } ensureLogDirectoryExists() { try { if (!existsSync(this.logPath)) { mkdirSync(this.logPath, { recursive: true }); } } catch { // Soft error } } // eslint-disable-next-line @typescript-eslint/no-explicit-any formatMessage(level, message, data) { const timestamp = new Date().toISOString(); const dataStr = data ? ` | Data: ${JSON.stringify(data)}` : ""; return `[${timestamp}] ${level.toUpperCase()}: ${message}${dataStr}\n`; } // eslint-disable-next-line @typescript-eslint/no-explicit-any writeLog(level, message, data) { try { const logEntry = this.formatMessage(level, message, data); appendFileSync(this.logFile, logEntry, "utf8"); } catch { // Soft error } } // eslint-disable-next-line @typescript-eslint/no-explicit-any debug(message, data) { if (DEBUG_MODE) { this.writeLog("debug", message, data); } } // eslint-disable-next-line @typescript-eslint/no-explicit-any info(message, data) { this.writeLog("info", message, data); } // eslint-disable-next-line @typescript-eslint/no-explicit-any warn(message, data) { this.writeLog("warn", message, data); } // eslint-disable-next-line @typescript-eslint/no-explicit-any error(message, data) { this.writeLog("error", message, data); } // eslint-disable-next-line @typescript-eslint/no-explicit-any success(message, data) { this.writeLog("success", message, data); } // eslint-disable-next-line @typescript-eslint/no-explicit-any oauth(message, data) { this.writeLog("oauth", message, data); } // eslint-disable-next-line @typescript-eslint/no-explicit-any progress(message, data) { this.writeLog("progress", message, data); } } export function createLogger(serverName, urlHash) { return new FileLogger(serverName, urlHash); } export const logger = new FileLogger("default", ""); //# sourceMappingURL=file-logger.js.map