@sap/opentelemetry-exporter-for-sap-cloud-logging
Version:
A set of auto-configured OpenTelemetry exporters for SAP Cloud Logging
42 lines • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AutoCloudLoggingLogsExporter = void 0;
const cloudLoggingServiceBindingsProvider_1 = require("../../cf/cloudLoggingServiceBindingsProvider");
const multiLogExporter_1 = require("../multi/multiLogExporter");
const cloudLoggingCredentials_1 = require("../../cf/cloudLoggingCredentials");
const tls_1 = require("tls");
const grpc_js_1 = require("@grpc/grpc-js");
const exporter_logs_otlp_grpc_1 = require("@opentelemetry/exporter-logs-otlp-grpc");
class AutoCloudLoggingLogsExporter extends multiLogExporter_1.MultiLogRecordExporter {
constructor(autoConfigExporters = true) {
super("AutoCloudLoggingLogsExporter");
if (autoConfigExporters) {
this.setupExporters();
}
}
setupExporters() {
let bindingsProvider = new cloudLoggingServiceBindingsProvider_1.CloudLoggingServiceBindingsProvider();
let bindings = bindingsProvider.get();
let exporters = bindings.map(binding => { return this.createExporterForBinding(binding); })
.filter(exporter => exporter !== undefined);
this.diagLogger.info(`Setup AutoCloudLoggingLogsExporter with ${exporters.length} exporter(s)`);
this.add(...exporters);
}
createExporterForBinding(binding) {
let credentials = cloudLoggingCredentials_1.CloudLoggingCredentials.parse(binding.getCredentials());
if (!credentials.validate()) {
return undefined;
}
let secureContext = (0, tls_1.createSecureContext)({
cert: credentials.getClientCert(),
key: credentials.getClientKey()
});
this.diagLogger.info(`Creating OTLP log exporter for service binding '${binding.getName()}' (${binding.getLabel()})`);
return new exporter_logs_otlp_grpc_1.OTLPLogExporter({
url: credentials.getEndpoint(),
credentials: grpc_js_1.credentials.createFromSecureContext(secureContext),
});
}
}
exports.AutoCloudLoggingLogsExporter = AutoCloudLoggingLogsExporter;
//# sourceMappingURL=autoCloudLoggingLogExporter.js.map