UNPKG

llmforge

Version:

One API, every AI model, instant switching. Change from GPT-4 to Gemini to local models with a single config update. LLMForge is the lightweight, TypeScript-first solution for multi-provider AI applications with zero vendor lock-in.

75 lines 2.63 kB
import * as fs from 'fs'; import * as path from 'path'; const logging = false; class Logger { constructor() { } static formatMessage(level, message) { const timestamp = Logger.timestamp ? `[${new Date().toISOString()}]` : ''; const levelTag = `[${level.toUpperCase()}]`; const content = message .map(item => { try { if (typeof item === 'object') { return JSON.stringify(item, null, 2); } return String(item); } catch (e) { return '[Unserializable Object]'; } }) .join(' '); return `${timestamp} ${levelTag} ${content}`; } static writeToFile(message) { try { const logDir = path.dirname(Logger.logFile); if (!fs.existsSync(logDir)) { fs.mkdirSync(logDir, { recursive: true }); } fs.appendFile(Logger.logFile, message + '\n', err => { if (err) { try { fs.appendFileSync(Logger.logFile, message + '\n'); } catch (syncErr) { process.stderr.write('Failed to write to log file: ' + String(syncErr) + '\n'); } } }); } catch (error) { process.stderr.write('Failed to write to log file: ' + String(error) + '\n'); } } static info(...message) { if (!logging) return; // const formattedMessage = Logger.formatMessage('info', message); Logger.writeToFile(formattedMessage); console.log(formattedMessage); } static debug(...message) { if (!logging) return; // Skip debug logs if logging is disabled const formattedMessage = Logger.formatMessage('debug', message); Logger.writeToFile(formattedMessage); console.info(formattedMessage); } static error(...message) { if (!logging) return; // const formattedMessage = Logger.formatMessage('error', message); Logger.writeToFile(formattedMessage); console.error(formattedMessage); } static warn(...message) { const formattedMessage = Logger.formatMessage('warn', message); Logger.writeToFile(formattedMessage); console.warn(formattedMessage); } } Logger.logFile = path.join(__dirname, '../../../.llmforge', 'llmforge.log'); Logger.timestamp = true; export const logger = Logger; //# sourceMappingURL=index.js.map