use of io.opentelemetry.sdk.logs.export.LogExporter in project opentelemetry-java by open-telemetry.
the class OtlpGrpcRetryTest method configureLogExporterRetryPolicy.
@Test
@SuppressLogger(DefaultGrpcExporter.class)
void configureLogExporterRetryPolicy() {
Map<String, String> props = new HashMap<>();
props.put("otel.exporter.otlp.logs.endpoint", "https://localhost:" + server.httpsPort());
props.put("otel.exporter.otlp.logs.certificate", certificate.certificateFile().getAbsolutePath());
props.put("otel.experimental.exporter.otlp.retry.enabled", "true");
try (LogExporter logExporter = LogExporterConfiguration.configureOtlpLogs(DefaultConfigProperties.createForTest(props), MeterProvider.noop())) {
testRetryableStatusCodes(() -> LOG_DATA, logExporter::export, server.logRequests::size);
testDefaultRetryPolicy(() -> LOG_DATA, logExporter::export, server.logRequests::size);
}
}
use of io.opentelemetry.sdk.logs.export.LogExporter in project opentelemetry-java by open-telemetry.
the class OtlpHttpConfigTest method configureLogExporter.
@Test
public void configureLogExporter() {
// Set values for general and signal specific properties. Signal specific should override
// general.
Map<String, String> props = new HashMap<>();
props.put("otel.exporter.otlp.protocol", "grpc");
props.put("otel.exporter.otlp.endpoint", "http://foo.bar");
props.put("otel.exporter.otlp.certificate", Paths.get("foo", "bar", "baz").toString());
props.put("otel.exporter.otlp.headers", "header-key=dummy-value");
props.put("otel.exporter.otlp.compression", "foo");
props.put("otel.exporter.otlp.timeout", "10s");
props.put("otel.exporter.otlp.logs.protocol", "http/protobuf");
props.put("otel.exporter.otlp.logs.endpoint", "https://localhost:" + server.httpsPort() + "/v1/logs");
props.put("otel.exporter.otlp.logs.certificate", server.selfSignedCertificate.certificate().getPath());
props.put("otel.exporter.otlp.logs.headers", "header-key=header-value");
props.put("otel.exporter.otlp.logs.compression", "gzip");
props.put("otel.exporter.otlp.logs.timeout", "15s");
LogExporter logExporter = LogExporterConfiguration.configureOtlpLogs(DefaultConfigProperties.createForTest(props), MeterProvider.noop());
assertThat(logExporter).extracting("delegate.client", as(InstanceOfAssertFactories.type(OkHttpClient.class))).extracting(OkHttpClient::callTimeoutMillis).isEqualTo((int) TimeUnit.SECONDS.toMillis(15));
assertThat(logExporter.export(Lists.newArrayList(generateFakeLog())).join(15, TimeUnit.SECONDS).isSuccess()).isTrue();
assertThat(server.logRequests).hasSize(1);
assertThat(server.requestHeaders).anyMatch(headers -> headers.contains(":path", "/v1/logs") && headers.contains("header-key", "header-value"));
}
use of io.opentelemetry.sdk.logs.export.LogExporter in project opentelemetry-java by open-telemetry.
the class OtlpGrpcConfigTest method configureLogExporter.
@Test
public void configureLogExporter() {
// Set values for general and signal specific properties. Signal specific should override
// general.
Map<String, String> props = new HashMap<>();
props.put("otel.exporter.otlp.endpoint", "http://foo.bar");
props.put("otel.exporter.otlp.certificate", Paths.get("foo", "bar", "baz").toString());
props.put("otel.exporter.otlp.headers", "header-key=dummy-value");
props.put("otel.exporter.otlp.compression", "gzip");
props.put("otel.exporter.otlp.timeout", "10s");
props.put("otel.exporter.otlp.logs.endpoint", "https://localhost:" + server.httpsPort());
props.put("otel.exporter.otlp.logs.certificate", certificate.certificateFile().getAbsolutePath());
props.put("otel.exporter.otlp.logs.headers", "header-key=header-value");
props.put("otel.exporter.otlp.logs.compression", "gzip");
props.put("otel.exporter.otlp.logs.timeout", "15s");
try (LogExporter logExporter = LogExporterConfiguration.configureOtlpLogs(DefaultConfigProperties.createForTest(props), MeterProvider.noop())) {
assertThat(logExporter).extracting("delegate.timeoutNanos").isEqualTo(TimeUnit.SECONDS.toNanos(15));
assertThat(logExporter.export(LOG_DATA).join(15, TimeUnit.SECONDS).isSuccess()).isTrue();
assertThat(server.logRequests).hasSize(1);
assertThat(server.requestHeaders).anyMatch(headers -> headers.contains(":path", "/opentelemetry.proto.collector.logs.v1.LogsService/Export") && headers.contains("header-key", "header-value") && headers.contains("grpc-encoding", "gzip"));
}
}
use of io.opentelemetry.sdk.logs.export.LogExporter in project opentelemetry-java by open-telemetry.
the class LogEmitterProviderConfiguration method configureLogProcessors.
// Visible for testing
static List<LogProcessor> configureLogProcessors(Map<String, LogExporter> exportersByName, MeterProvider meterProvider) {
Map<String, LogExporter> exportersByNameCopy = new HashMap<>(exportersByName);
List<LogProcessor> logProcessors = new ArrayList<>();
LogExporter exporter = exportersByNameCopy.remove("logging");
if (exporter != null) {
logProcessors.add(SimpleLogProcessor.create(exporter));
}
if (!exportersByNameCopy.isEmpty()) {
LogExporter compositeLogExporter = LogExporter.composite(exportersByNameCopy.values());
logProcessors.add(BatchLogProcessor.builder(compositeLogExporter).setMeterProvider(meterProvider).build());
}
return logProcessors;
}
use of io.opentelemetry.sdk.logs.export.LogExporter in project opentelemetry-java by open-telemetry.
the class LogExporterConfiguration method configureLogExporters.
// Visible for test
static Map<String, LogExporter> configureLogExporters(ConfigProperties config, MeterProvider meterProvider, BiFunction<? super LogExporter, ConfigProperties, ? extends LogExporter> logExporterCustomizer) {
Set<String> exporterNames = DefaultConfigProperties.getSet(config, "otel.logs.exporter");
// Default to no exporter
if (exporterNames.isEmpty()) {
exporterNames = Collections.singleton(EXPORTER_NONE);
}
if (exporterNames.contains(EXPORTER_NONE)) {
if (exporterNames.size() > 1) {
throw new ConfigurationException("otel.logs.exporter contains " + EXPORTER_NONE + " along with other exporters");
}
return Collections.emptyMap();
}
Map<String, LogExporter> exportersByName = new HashMap<>();
for (String name : exporterNames) {
LogExporter logExporter = configureExporter(name, config, meterProvider);
if (logExporter != null) {
LogExporter customizedLogExporter = logExporterCustomizer.apply(logExporter, config);
exportersByName.put(name, customizedLogExporter);
}
}
return Collections.unmodifiableMap(exportersByName);
}
Aggregations