logger-genesis
Version:
Logger package for genesis developers
104 lines • 4.05 kB
JavaScript
;
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