UNPKG

langcode

Version:

A Plugin-Based Framework for Managing and Using LangChain

140 lines (139 loc) 5.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.Logger = void 0; exports.createLogger = createLogger; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const events_1 = require("events"); const chalk_1 = __importDefault(require("chalk")); class Logger extends events_1.EventEmitter { constructor(loggerargs) { var _a, _b, _c; super(); this.toConsole = (_a = loggerargs === null || loggerargs === void 0 ? void 0 : loggerargs.debug) !== null && _a !== void 0 ? _a : false; this.filePath = (_b = loggerargs === null || loggerargs === void 0 ? void 0 : loggerargs.filePath) !== null && _b !== void 0 ? _b : "./debug/langcode.log"; this.tag = (_c = loggerargs === null || loggerargs === void 0 ? void 0 : loggerargs.tag) !== null && _c !== void 0 ? _c : null; // Dosya hazırlığı if (this.filePath) { const dir = path_1.default.dirname(this.filePath); if (!fs_1.default.existsSync(dir)) { fs_1.default.mkdirSync(dir, { recursive: true }); } fs_1.default.writeFileSync(this.filePath, "Langoce Log Başladı:\n", { flag: "w" }); } } // Log seviyeleri info(message, data) { this.logInternal("info", message, data); } warn(message, data) { this.logInternal("warn", message, data); } error(message, data) { this.logInternal("error", message, data); } success(message, data) { this.logInternal("success", message, data); } debug(message, data) { this.logInternal("debug", message, data); } /** * İç metod: hem konsol/dosyaya yazıyor hem event emit ediyor. */ logInternal(level, message, data) { var _a; const time = new Date().toISOString(); const plainOutput = `[${time}] [${level.toUpperCase()}] ${message}`; if (this.toConsole) { const coloredOutput = this.colorize(level, plainOutput); if (data) { console.log(coloredOutput, "\n", this.colorize(level, this.safeSerialize(data))); } else { console.log(coloredOutput); } } if (this.filePath) { let fileOut = plainOutput; if (data) { fileOut += "\n" + this.safeSerialize(data); } fs_1.default.appendFileSync(this.filePath, fileOut + "\n"); } const payload = { level, time, message, data }; const eventName = this.tag ? `${this.tag}:${level}` : level; const baseEvent = (_a = this.tag) !== null && _a !== void 0 ? _a : level; this.emit(eventName, payload); this.emit(baseEvent, payload); } /** * Renkli konsol çıktısı için chalk */ // private colorize(level: LogLevel, text: string): string { // switch (level) { // case "info": // return chalk.blue(text); // case "warn": // return chalk.yellow(text); // case "error": // return chalk.red(text); // case "success": // return chalk.green(text); // case "debug": // return chalk.cyan(text); // default: // return text; // } // } colorize(level, text) { switch (level) { case "info": return chalk_1.default.hex("#0099ff")(text); // özel mavi case "warn": return chalk_1.default.hex("#ffff00")(text); // sarı case "error": return chalk_1.default.hex("#ff0000")(text); // gerçek kırmızı case "success": return chalk_1.default.hex("#00cc00")(text); // yeşil case "debug": return chalk_1.default.hex("#aaaaaa")(text); // gri default: return text; } } /** * Nesneleri güvenle serileştirme */ safeSerialize(data) { try { return JSON.stringify(data, this.replacer, 2); } catch (_a) { return "[Unserializable Data]"; } } replacer(key, value) { var _a; if (typeof value === "function") return "[Function]"; if (typeof value === "object" && value !== null) { const constructorName = (_a = value.constructor) === null || _a === void 0 ? void 0 : _a.name; const allowed = ["Object", "Array", "Map", "Set"]; if (constructorName && !allowed.includes(constructorName)) { return `[Instance of ${constructorName}]`; } } return value; } } exports.Logger = Logger; /** Factory fonksiyonu (opsiyonel) */ function createLogger(args) { return new Logger(args); } const logger = (loggerargs) => new Logger(loggerargs); exports.logger = logger;