UNPKG

@aradox/multi-orm

Version:

Type-safe ORM with multi-datasource support, row-level security, and Prisma-like API for PostgreSQL, SQL Server, and HTTP APIs

87 lines 2.69 kB
"use strict"; /** * Logging utility with environment-based log level control * * Set LOG_LEVEL environment variable to control verbosity: * - 'off' or undefined: No logging (default) * - 'error': Only errors * - 'warn': Warnings and errors * - 'info': Info, warnings, and errors * - 'debug': All logs including debug statements * * Set LOG_MODULES to filter by module (comma-separated): * - 'parser,stitcher,adapter' etc. * - Leave empty to log all modules * * Examples: * LOG_LEVEL=debug npm start * LOG_LEVEL=info LOG_MODULES=stitcher,adapter node dist/example.js */ Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = void 0; const LOG_LEVELS = { off: 0, error: 1, warn: 2, info: 3, debug: 4 }; class Logger { level; modules; constructor() { this.level = process.env.LOG_LEVEL || 'off'; const moduleFilter = process.env.LOG_MODULES; if (moduleFilter) { this.modules = new Set(moduleFilter.split(',').map(m => m.trim().toLowerCase())); } else { this.modules = null; // null means log all modules } } shouldLog(level, module) { // Check log level if (LOG_LEVELS[this.level] < LOG_LEVELS[level]) { return false; } // Check module filter if (this.modules && module && !this.modules.has(module)) { return false; } return true; } formatMessage(module, message) { const timestamp = new Date().toISOString(); const modulePrefix = module ? `[${module.toUpperCase()}]` : ''; return `${timestamp} ${modulePrefix} ${message}`; } debug(module, message, ...args) { if (this.shouldLog('debug', module)) { console.log(this.formatMessage(module, message), ...args); } } info(module, message, ...args) { if (this.shouldLog('info', module)) { console.log(this.formatMessage(module, message), ...args); } } warn(module, message, ...args) { if (this.shouldLog('warn', module)) { console.warn(this.formatMessage(module, message), ...args); } } error(module, message, ...args) { if (this.shouldLog('error', module)) { console.error(this.formatMessage(module, message), ...args); } } // Legacy methods for backward compatibility (no module filtering) log(message, ...args) { if (this.shouldLog('info', undefined)) { console.log(message, ...args); } } } // Export singleton instance exports.logger = new Logger(); //# sourceMappingURL=logger.js.map