adpa-enterprise-framework-automation
Version:
Modular, standards-compliant Node.js/TypeScript automation framework for enterprise requirements, project, and data management. Provides CLI and API for BABOK v3, PMBOK 7th Edition, and DMBOK 2.0 (in progress). Production-ready Express.js API with TypeSpe
68 lines • 2.06 kB
JavaScript
/**
* Logger Implementation
* Provides structured logging with different levels and context
*/
export class Logger {
module;
minLevel;
constructor(module, minLevel = 'info') {
this.module = module;
this.minLevel = minLevel;
}
debug(message, context) {
this.log('debug', message, context);
}
info(message, context) {
this.log('info', message, context);
}
warn(message, context) {
this.log('warn', message, context);
}
error(message, context) {
this.log('error', message, context);
}
log(level, message, context) {
if (!this.shouldLog(level)) {
return;
}
const entry = {
timestamp: new Date(),
level,
message,
context,
module: this.module
};
this.output(entry);
}
shouldLog(level) {
const levels = ['debug', 'info', 'warn', 'error'];
const currentIndex = levels.indexOf(level);
const minIndex = levels.indexOf(this.minLevel);
return currentIndex >= minIndex;
}
output(entry) {
const timestamp = entry.timestamp.toISOString();
const levelUpper = entry.level.toUpperCase().padEnd(5);
const contextStr = entry.context ? ` ${JSON.stringify(entry.context)}` : '';
const logMessage = `[${timestamp}] ${levelUpper} [${entry.module}] ${entry.message}${contextStr}`;
switch (entry.level) {
case 'error':
console.error(logMessage);
break;
case 'warn':
console.warn(logMessage);
break;
case 'debug':
console.debug(logMessage);
break;
default:
console.log(logMessage);
}
}
createChild(childModule) {
return new Logger(`${this.module}:${childModule}`, this.minLevel);
}
}
// Legacy compatibility export
export const logger = new Logger('adobe');
//# sourceMappingURL=logger.js.map