winston-openobserve
Version:
Winston OpenObserve transport
88 lines • 4.42 kB
JavaScript
;
var _OpenObserveTransport_instances, _OpenObserveTransport_sender, _OpenObserveTransport_options, _OpenObserveTransport_getTimestamp;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenObserveTransport = void 0;
const tslib_1 = require("tslib");
const winston_transport_1 = tslib_1.__importDefault(require("winston-transport"));
const sender_1 = require("./sender");
const triple_beam_1 = require("triple-beam");
const assert = tslib_1.__importStar(require("assert"));
const async_exit_hook_1 = tslib_1.__importDefault(require("async-exit-hook"));
function isURL(url) {
try {
new URL('', url);
return true;
}
catch (error) {
return false;
}
}
class OpenObserveTransport extends winston_transport_1.default {
constructor(options) {
super();
_OpenObserveTransport_instances.add(this);
_OpenObserveTransport_sender.set(this, void 0);
_OpenObserveTransport_options.set(this, void 0);
assert.ok(options.defaultOrg, 'Set default org_id');
assert.ok(options.defaultStream, 'Set default stream name');
assert.ok(isURL(options.host), 'Host URL can not parse');
tslib_1.__classPrivateFieldSet(this, _OpenObserveTransport_options, Object.assign({ bulk: true, gracefulShutdown: true, timeout: 10000, interval: 10000, cleanOnRequestError: false, useNow: false }, options), "f");
tslib_1.__classPrivateFieldSet(this, _OpenObserveTransport_sender, new sender_1.Sender(tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_options, "f")), "f");
if (tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_options, "f").gracefulShutdown) {
(0, async_exit_hook_1.default)(() => {
this.close();
});
}
}
log(info, next) {
setImmediate(() => {
this.emit('logged', info);
});
let { label, labels, timestamp, level, message, org, stream, bulk } = info, rest = tslib_1.__rest(info, ["label", "labels", "timestamp", "level", "message", "org", "stream", "bulk"]);
timestamp = tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_instances, "m", _OpenObserveTransport_getTimestamp).call(this, timestamp);
let openObserveLabels = {
level,
};
labels = Object.assign({}, tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_options, "f").labels);
for (const key in openObserveLabels) {
if (Object.prototype.hasOwnProperty.call(openObserveLabels, key)) {
const value = openObserveLabels[key];
if (typeof value !== 'string') {
openObserveLabels[key] = String(value);
}
}
}
message = !!tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_options, "f").format
? info[triple_beam_1.MESSAGE]
: `${message} ${rest && Object.keys(rest).length > 0 ? JSON.stringify(rest) : ''}`;
tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_sender, "f")
.push({
labels,
timestamp,
level,
message,
label,
orgId: org !== null && org !== void 0 ? org : tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_options, "f").defaultOrg,
streamName: stream !== null && stream !== void 0 ? stream : tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_options, "f").defaultStream,
}, bulk !== null && bulk !== void 0 ? bulk : tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_options, "f").bulk)
.then(next);
}
close() {
tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_sender, "f").close();
}
}
exports.OpenObserveTransport = OpenObserveTransport;
_OpenObserveTransport_sender = new WeakMap(), _OpenObserveTransport_options = new WeakMap(), _OpenObserveTransport_instances = new WeakSet(), _OpenObserveTransport_getTimestamp = function _OpenObserveTransport_getTimestamp(timestamp) {
if (tslib_1.__classPrivateFieldGet(this, _OpenObserveTransport_options, "f").useNow)
return Date.now();
let ts;
if (timestamp) {
ts = new Date(timestamp).getTime();
ts = isNaN(ts) ? Date.now() : ts;
}
else {
ts = Date.now();
}
return ts;
};
//# sourceMappingURL=openobserve-transport.js.map