@sap/opentelemetry-exporter-for-sap-cloud-logging
Version:
A set of auto-configured OpenTelemetry exporters for SAP Cloud Logging
49 lines • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultiSpanExporter = void 0;
const core_1 = require("@opentelemetry/core");
const api_1 = require("@opentelemetry/api");
class MultiSpanExporter {
constructor(className = "MultiSpanExporter") {
this.spanExporters = [];
this.diagLogger = api_1.diag.createComponentLogger({
namespace: className
});
}
add(...exporters) {
this.spanExporters.push(...exporters);
}
export(spans, resultCallback) {
let promises = this.spanExporters.map((exporter) => new Promise((resolve) => exporter.export(spans, (result) => {
if (result.code == core_1.ExportResultCode.FAILED && result.error) {
this.diagLogger.warn("Error returned by the export.", result.error);
}
resolve(result);
})));
Promise.all(promises).then((results) => resultCallback({ code: results.every(result => result.code == core_1.ExportResultCode.SUCCESS) ? core_1.ExportResultCode.SUCCESS : core_1.ExportResultCode.FAILED }));
}
shutdown() {
let promises = this.spanExporters.map((exporter) => exporter.shutdown());
let overallPromise = new Promise((resolve, reject) => {
Promise.all(promises).then(() => {
resolve();
}).catch((reason) => {
reject(reason);
});
});
return overallPromise;
}
forceFlush() {
let promises = this.spanExporters.map((exporter) => { var _a; return (_a = exporter.forceFlush) === null || _a === void 0 ? void 0 : _a.call(exporter); });
let overallPromise = new Promise((resolve, reject) => {
Promise.all(promises).then(() => {
resolve();
}).catch((reason) => {
reject(reason);
});
});
return overallPromise;
}
}
exports.MultiSpanExporter = MultiSpanExporter;
//# sourceMappingURL=multiSpanExporter.js.map