@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
JavaScript
;
/**
* 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