@inv2/common
Version:
A common module for v2
59 lines (58 loc) • 2.07 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.INLogger = void 0;
const winston_1 = require("winston");
const winston_transport_1 = __importDefault(require("winston-transport"));
const log_created_1 = require("../events/common-publisher/log-created");
class INv2Transport extends winston_transport_1.default {
constructor(opts, rabbitMQcxn) {
super(opts);
//
// Consume any custom options here. e.g.:
// - Connection information for databases
// - Authentication information for APIs (e.g. loggly, papertrail, logentries, etc.).
//
this.logPublisher = new log_created_1.LogCreatedPublisher(rabbitMQcxn);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
log(info, callback) {
setImmediate(() => {
this.emit('logged', info);
});
// Perform the writing to the remote service
this.logPublisher.publish({
level: info.level,
service: info.service,
message: info.message,
timestamp: info.timestamp
});
callback();
}
}
;
class Logger {
init(service, cxn) {
this.service = service;
this.cxn = cxn;
}
get log() {
return (0, winston_1.createLogger)({
level: 'info',
transports: [
new winston_1.transports.Console(),
new INv2Transport({
level: 'info',
endpoint: 'none',
}, this.cxn)
],
format: winston_1.format.combine(
// format.colorize(),
winston_1.format.timestamp({ format: 'MMM-DD-YYYY HH:mm:ss' }), winston_1.format.json(), winston_1.format.prettyPrint(), winston_1.format.errors({ stack: true })),
defaultMeta: { service: this.service }
});
}
}
exports.INLogger = new Logger;