@codai/memorai-core
Version:
Simplified advanced memory engine - no tiers, just powerful semantic search with persistence
82 lines (81 loc) • 2.67 kB
JavaScript
/**
* 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();