UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

60 lines (59 loc) 2.03 kB
/** * 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; } } }