UNPKG

winston-firehose

Version:

Winston logging transport for logging into Amazon AWS Firehose.

61 lines (60 loc) 2.21 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FirehoseTransport = void 0; const triple_beam_1 = require("triple-beam"); const winston_transport_1 = __importDefault(require("winston-transport")); const firehose_sender_1 = require("./firehose-sender"); const types_1 = require("./types"); /** * Winston transport that pipes log messages into AWS Kinesis Firehose. * * @export * @class FirehoseTransport * @extends {Transport} */ class FirehoseTransport extends winston_transport_1.default { /** * Creates an instance of FirehoseTransport. * * @param {FirehoseTransportOptions} options * @memberof FirehoseTransport */ constructor(options) { var _a, _b, _c; super(options); this.name = "FirehoseLogger"; if (!options.useLoggerLevel) { this.level = (_a = options.level) !== null && _a !== void 0 ? _a : 'info'; } if (!options.useLoggerFormat) { this.formatter = (_b = options.formatter) !== null && _b !== void 0 ? _b : types_1.DefaultFormatter; } const streamName = options.streamName; const firehoseOptions = options.firehoseOptions || {}; this.sender = (_c = options.firehoseSender) !== null && _c !== void 0 ? _c : new firehose_sender_1.FirehoseSender(streamName, firehoseOptions); } // eslint-disable-next-line @typescript-eslint/no-explicit-any log(info, callback) { // Fire and forget so we don't back up the stream. if (callback) { setImmediate(callback); } let message = info[triple_beam_1.MESSAGE]; if (this.formatter) { message = Object.assign({ timestamp: (new Date()).toISOString() }, info); message = this.formatter(message); } this.sender .send(message) .then(() => { this.emit('logged', message); }) .catch((err) => { this.emit('error', err); }); } } exports.FirehoseTransport = FirehoseTransport;