UNPKG

logger-genesis

Version:
104 lines 4.05 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const menashmq_1 = __importDefault(require("menashmq")); const winston = __importStar(require("winston")); class LoggerGenesis { system; service; useRabbit; logQueueName; winstonLogger; connected = false; async initialize(system, service, useRabbit, rabbitOptions) { this.system = system; this.service = service; this.useRabbit = useRabbit; this.createWinstonLogger(); if (useRabbit) { if (!rabbitOptions) throw new Error(`rabbitOptions required`); this.logQueueName = rabbitOptions.logQueueName; if (rabbitOptions.createMenashRabbitMQConnection) await LoggerGenesis.connectToRabbitMQ(rabbitOptions.uri, rabbitOptions.retryOptions); if (menashmq_1.default.isReady) await this.declareQueue(); else throw new Error(`Can't find rabbitMQ to connect`); this.connected = true; } } createWinstonLogger() { const { config, format } = winston; this.winstonLogger = winston.createLogger({ levels: config.npm.levels, format: format.combine(format.colorize(), format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss', }), format.splat(), format.simple()), transports: [new winston.transports.Console()], }); } async declareQueue() { await menashmq_1.default.declareQueue(this.logQueueName, { durable: true }); } static async connectToRabbitMQ(uri, retryOptions = {}) { await menashmq_1.default.connect(uri, retryOptions); } sendLogToQueue(level, title, message, extraFields) { const logToSend = { system: this.system, service: this.service, level, title, message, '@timeStamp': Date.now(), ...extraFields, }; menashmq_1.default.send(this.logQueueName, logToSend, { persistent: true }).catch((err) => console.log('failed to log', err)); } info(title, message, extraFields) { if (this.useRabbit) this.sendLogToQueue('info', title, message, extraFields); this.winstonLogger.info(title + ', ' + message); } warn(title, message, extraFields) { if (this.useRabbit) this.sendLogToQueue('warn', title, message, extraFields); this.winstonLogger.warn(title + ', ' + message); } error(title, message, extraFields) { if (this.useRabbit) this.sendLogToQueue('error', title, message, extraFields); this.winstonLogger.error(title + ', ' + message); } isConnected() { return this.connected; } } exports.default = LoggerGenesis; //# sourceMappingURL=logger.js.map