log-vault
Version:
A generator of Winston logger instance with pre-defined configurable transports and formats and extra functionality.
41 lines (40 loc) • 1.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NotificationsTransport = void 0;
const defaultConnections_1 = require("../defaults/defaultConnections");
const defaultJobOptions_1 = require("../defaults/defaultJobOptions");
const bullmq_1 = require("bullmq");
const node_crypto_1 = require("node:crypto");
const winston_transport_1 = __importDefault(require("winston-transport"));
const util_1 = require("../util");
class NotificationsTransport extends winston_transport_1.default {
constructor(options = {}) {
super(options);
const { name = (0, util_1.projectDirName)(), queueOptions, jobOptions } = options;
this.jobOptions = {
...defaultJobOptions_1.defaultJobOptions,
...jobOptions
};
this.queue = new bullmq_1.Queue(name, {
connection: defaultConnections_1.defaultRedisConnection,
...queueOptions
});
}
async log(info, callback) {
setImmediate(() => {
this.emit("logged", info);
});
try {
await this.queue.add((0, node_crypto_1.randomUUID)(), info, this.jobOptions);
callback();
}
catch (error) {
process.stderr.write(`[NotificationsTransport] Failed to queue log: ${error}\n`);
callback();
}
}
}
exports.NotificationsTransport = NotificationsTransport;