UNPKG

rabbitmq-event-manager

Version:

A nodeJS Event Manager to emit, and listen event through RabbitMQ

61 lines 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = require("stream"); const winston = require("winston"); const EventManagerError_1 = require("./EventManagerError"); const { format } = winston; const { combine, printf, metadata, timestamp, label, colorize, errors, json } = format; const myFormat = printf(info => { info.stack = info.stack && info.stack !== '' ? `\n${info.stack}` : ''; info.metadata = info.metadata && Object.keys(info.metadata).length > 0 ? ` - metadata: ${JSON.stringify(info.metadata)}` : ''; return `${info.timestamp} [${info.label}] ${info.level}: ${info.message}${info.metadata}${info.stack}`; }); function createFormat(prefix) { return combine(timestamp(), label({ label: prefix }), colorize(), metadata({ fillExcept: ['message', 'label', 'timestamp', 'level', 'stack'], }), errors({ stack: true }), myFormat); } const jsonFormat = (prefix) => combine(timestamp(), label({ label: prefix }), errors({ stack: true }), json()); let currentLogger = null; function createLogger({ prefix = '[RABBITMQ]', level = 'error', transportMode = 'console' }) { if (currentLogger === null) { const transports = []; // winston interface are not that useful if (transportMode === 'mute') { transports.push(new winston.transports.Stream({ stream: new stream_1.Writable({ write: () => { /* do nothing */ }, }), })); } else { // transports === 'console' transports.push(new winston.transports.Console({ level, format: createFormat(prefix), })); } currentLogger = winston.createLogger({ level, format: jsonFormat(prefix), transports, }); } } exports.createLogger = createLogger; exports.LOGGER = new Proxy({}, { get: (_, prop) => { if (currentLogger === null) { throw new EventManagerError_1.EventManagerError('Logger has not been inititialized'); } else { return currentLogger[prop.toString()]; } }, }); function setLogger(logger) { currentLogger = logger; } exports.setLogger = setLogger; //# sourceMappingURL=logger.js.map