@sap/opentelemetry-exporter-for-sap-cloud-logging
Version:
A set of auto-configured OpenTelemetry exporters for SAP Cloud Logging
49 lines • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultiMetricExporter = void 0;
const core_1 = require("@opentelemetry/core");
const api_1 = require("@opentelemetry/api");
class MultiMetricExporter {
constructor(className = "MultiMetricExporter") {
this.metricExporters = [];
this.diagLogger = api_1.diag.createComponentLogger({
namespace: className
});
}
add(...exporters) {
this.metricExporters.push(...exporters);
}
forceFlush() {
let promises = this.metricExporters.map((exporter) => exporter.forceFlush());
let overallPromise = new Promise((resolve, reject) => {
Promise.all(promises).then(() => {
resolve();
}).catch((reason) => {
reject(reason);
});
});
return overallPromise;
}
export(metrics, resultCallback) {
let promises = this.metricExporters.map((exporter) => new Promise((resolve) => exporter.export(metrics, (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.metricExporters.map((exporter) => exporter.shutdown());
let overallPromise = new Promise((resolve, reject) => {
Promise.all(promises).then(() => {
resolve();
}).catch((reason) => {
reject(reason);
});
});
return overallPromise;
}
}
exports.MultiMetricExporter = MultiMetricExporter;
//# sourceMappingURL=multiMetricExporter.js.map