rabbitmq-event-manager
Version:
A nodeJS Event Manager to emit, and listen event through RabbitMQ
61 lines • 2.35 kB
JavaScript
;
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