@apistudio/apim-cli
Version:
CLI for API Management Products
60 lines (59 loc) • 2.03 kB
JavaScript
/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import winston from 'winston';
import { getLogger, createLoggerInstance } from './utils.js';
import { ComponentCodes } from './constants/component.js';
import { MESSAGES } from './constants/log-messages.js';
export class Logger {
formatMessage(template, ...params) {
if (params.length === 0) {
return template;
}
return template.replace(/{(\d+)}/g, (match, number) => {
const index = Number(number);
return typeof params[index] !== 'undefined' ? params[index] : match;
});
}
constructor(moduleName) {
this.moduleName = moduleName;
this.logger = createLoggerInstance(moduleName.toString());
this.componentCode = ComponentCodes[moduleName];
if (!this.componentCode) {
throw new Error('Invalid component');
}
}
logInfo(messageKey, ...params) {
this.logger.log({
level: 'info',
message: `[${this.componentCode}.${messageKey}] ${this.formatMessage(MESSAGES[messageKey], ...params)}`
});
}
logError(messageKey, ...params) {
this.logger.log({
level: 'error',
message: `[${this.componentCode}.${messageKey}] ${this.formatMessage(MESSAGES[messageKey], ...params)}`
});
}
logDebug(messageKey, ...params) {
this.logger.log({
level: 'debug',
message: `[${this.componentCode}.${messageKey}] ${this.formatMessage(MESSAGES[messageKey], ...params)}`
});
}
logWarn(messageKey, ...params) {
this.logger.log({
level: 'warn',
message: `[${this.componentCode}.${messageKey}] ${this.formatMessage(MESSAGES[messageKey], ...params)}`
});
}
setLogLevel(moduleName, level) {
if (winston.loggers.has(moduleName)) {
getLogger(moduleName).level = level;
return 0;
}
else {
return -1;
}
}
}