UNPKG

@codai/memorai-core

Version:

Simplified advanced memory engine - no tiers, just powerful semantic search with persistence

82 lines (81 loc) 2.67 kB
/** * Simple logging utility for the Memorai core package */ /// <reference types="node" /> // LogEntry interface for future use when implementing full logging // interface LogEntry { // level: LogLevel; // message: string; // timestamp: Date; // data?: unknown; // } class Logger { constructor() { this.logLevel = 'info'; // Set log level from environment const envLevel = process.env.LOG_LEVEL?.toLowerCase(); if (envLevel && ['debug', 'info', 'warn', 'error'].includes(envLevel)) { this.logLevel = envLevel; } } static getInstance() { if (!Logger.instance) { Logger.instance = new Logger(); } return Logger.instance; } shouldLog(level) { const levels = { debug: 0, info: 1, warn: 2, error: 3, }; return levels[level] >= levels[this.logLevel]; } log(level, _message, _data) { if (!this.shouldLog(level)) return; // In testing environment, just use console for simplicity // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - process is available in Node.js environment if (process.env.NODE_ENV === 'test') { return; } // Format the log message would use these variables // const timestamp = entry.timestamp.toISOString(); // const levelStr = level.toUpperCase().padEnd(5); // const logMessage = `[${timestamp}] ${levelStr} ${message}`; // Output to console with appropriate method switch (level) { case 'debug': // eslint-disable-next-line no-console // Console statement removed for production break; case 'info': // eslint-disable-next-line no-console // Console statement removed for production break; case 'warn': // eslint-disable-next-line no-console // Console statement removed for production break; case 'error': // eslint-disable-next-line no-console // Console statement removed for production break; } } debug(message, data) { this.log('debug', message, data); } info(message, data) { this.log('info', message, data); } warn(message, data) { this.log('warn', message, data); } error(message, data) { this.log('error', message, data); } } // Export singleton instance export const logger = Logger.getInstance();