git-spark
Version:
Git repository analytics and reporting tool for analyzing commit patterns and contributor activity
79 lines • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLogger = createLogger;
exports.setGlobalLogLevel = setGlobalLogLevel;
class Logger {
constructor(module) {
this.level = 'info';
this.module = module;
}
setLevel(level) {
this.level = level;
}
error(message, metadata) {
this.log('error', message, metadata);
}
warn(message, metadata) {
this.log('warn', message, metadata);
}
info(message, metadata) {
this.log('info', message, metadata);
}
debug(message, metadata) {
this.log('debug', message, metadata);
}
verbose(message, metadata) {
this.log('verbose', message, metadata);
}
log(level, message, metadata) {
if (!this.shouldLog(level))
return;
const entry = {
timestamp: new Date(),
level,
module: this.module,
message,
metadata,
};
this.output(entry);
}
shouldLog(level) {
const levels = ['error', 'warn', 'info', 'debug', 'verbose'];
const currentIndex = levels.indexOf(this.level);
const messageIndex = levels.indexOf(level);
return messageIndex <= currentIndex;
}
output(entry) {
const timestamp = entry.timestamp.toISOString();
const levelStr = entry.level.toUpperCase().padEnd(7);
const moduleStr = entry.module.padEnd(12);
let output = `${timestamp} ${levelStr} [${moduleStr}] ${entry.message}`;
if (entry.metadata) {
output += ` ${JSON.stringify(entry.metadata)}`;
}
switch (entry.level) {
case 'error':
console.error(output);
break;
case 'warn':
console.warn(output);
break;
default:
console.log(output);
break;
}
}
}
const loggers = new Map();
function createLogger(module) {
if (!loggers.has(module)) {
loggers.set(module, new Logger(module));
}
return loggers.get(module);
}
function setGlobalLogLevel(level) {
for (const logger of loggers.values()) {
logger.setLevel(level);
}
}
//# sourceMappingURL=logger.js.map