Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,20 @@

import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNonNull;

import io.opentelemetry.api.logs.Severity;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerConfigModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerConfiguratorModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerMatcherAndConfigModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordProcessorModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LoggerProviderModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel.SeverityNumber;
import io.opentelemetry.sdk.internal.ScopeConfigurator;
import io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder;
import io.opentelemetry.sdk.logs.LogLimits;
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
import io.opentelemetry.sdk.logs.internal.LoggerConfig;
import io.opentelemetry.sdk.logs.internal.LoggerConfigBuilder;
import io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil;
import java.util.List;

Expand Down Expand Up @@ -97,10 +100,72 @@ private static class LoggerConfigFactory
@Override
public LoggerConfig create(
ExperimentalLoggerConfigModel model, DeclarativeConfigContext context) {
LoggerConfigBuilder configBuilder = LoggerConfig.builder();
if (model.getDisabled() != null && model.getDisabled()) {
return LoggerConfig.disabled();
configBuilder.setEnabled(false);
}
return LoggerConfig.defaultConfig();
if (model.getTraceBased() != null && model.getTraceBased()) {
configBuilder.setTraceBased(true);
}
if (model.getMinimumSeverity() != null) {
configBuilder.setMinimumSeverity(severityNumberToSeverity(model.getMinimumSeverity()));
}
return configBuilder.build();
}
}

// Visible for testing
static Severity severityNumberToSeverity(SeverityNumber model) {
switch (model) {
case TRACE:
return Severity.TRACE;
case TRACE_2:
return Severity.TRACE2;
case TRACE_3:
return Severity.TRACE3;
case TRACE_4:
return Severity.TRACE4;
case DEBUG:
return Severity.DEBUG;
case DEBUG_2:
return Severity.DEBUG2;
case DEBUG_3:
return Severity.DEBUG3;
case DEBUG_4:
return Severity.DEBUG4;
case INFO:
return Severity.INFO;
case INFO_2:
return Severity.INFO2;
case INFO_3:
return Severity.INFO3;
case INFO_4:
return Severity.INFO4;
case WARN:
return Severity.WARN;
case WARN_2:
return Severity.WARN2;
case WARN_3:
return Severity.WARN3;
case WARN_4:
return Severity.WARN4;
case ERROR:
return Severity.ERROR;
case ERROR_2:
return Severity.ERROR2;
case ERROR_3:
return Severity.ERROR3;
case ERROR_4:
return Severity.ERROR4;
case FATAL:
return Severity.FATAL;
case FATAL_2:
return Severity.FATAL2;
case FATAL_3:
return Severity.FATAL3;
case FATAL_4:
return Severity.FATAL4;
}
throw new IllegalArgumentException("Unrecognized severity number: " + model);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import static io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil.setLoggerConfigurator;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;

import io.opentelemetry.api.logs.Severity;
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
import io.opentelemetry.internal.testing.CleanupExtension;
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
Expand All @@ -20,6 +21,7 @@
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordLimitsModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordProcessorModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LoggerProviderModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel.SeverityNumber;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpHttpExporterModel;
import io.opentelemetry.sdk.internal.ScopeConfigurator;
import io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder;
Expand Down Expand Up @@ -92,13 +94,20 @@ private static Stream<Arguments> createArguments() {
.withName("foo")
.withConfig(
new ExperimentalLoggerConfigModel()
.withDisabled(false)))))),
.withDisabled(false)
.withTraceBased(true)
.withMinimumSeverity(SeverityNumber.INFO)))))),
setLoggerConfigurator(
SdkLoggerProvider.builder(),
ScopeConfigurator.<LoggerConfig>builder()
.setDefault(LoggerConfig.disabled())
.addCondition(
ScopeConfiguratorBuilder.nameMatchesGlob("foo"), LoggerConfig.enabled())
ScopeConfiguratorBuilder.nameMatchesGlob("foo"),
LoggerConfig.builder()
.setEnabled(true)
.setTraceBased(true)
.setMinimumSeverity(Severity.INFO)
.build())
.build())
.setLogLimits(
() ->
Expand All @@ -112,4 +121,38 @@ private static Stream<Arguments> createArguments() {
.build())
.build()));
}

@ParameterizedTest
@MethodSource("severityNumberArguments")
void severityNumber(SeverityNumber model, Severity expectedSeverity) {
assertThat(LoggerProviderFactory.severityNumberToSeverity(model)).isEqualTo(expectedSeverity);
}

private static Stream<Arguments> severityNumberArguments() {
return Stream.of(
Arguments.of(SeverityNumber.TRACE, Severity.TRACE),
Arguments.of(SeverityNumber.TRACE_2, Severity.TRACE2),
Arguments.of(SeverityNumber.TRACE_3, Severity.TRACE3),
Arguments.of(SeverityNumber.TRACE_4, Severity.TRACE4),
Arguments.of(SeverityNumber.DEBUG, Severity.DEBUG),
Arguments.of(SeverityNumber.DEBUG_2, Severity.DEBUG2),
Arguments.of(SeverityNumber.DEBUG_3, Severity.DEBUG3),
Arguments.of(SeverityNumber.DEBUG_4, Severity.DEBUG4),
Arguments.of(SeverityNumber.INFO, Severity.INFO),
Arguments.of(SeverityNumber.INFO_2, Severity.INFO2),
Arguments.of(SeverityNumber.INFO_3, Severity.INFO3),
Arguments.of(SeverityNumber.INFO_4, Severity.INFO4),
Arguments.of(SeverityNumber.WARN, Severity.WARN),
Arguments.of(SeverityNumber.WARN_2, Severity.WARN2),
Arguments.of(SeverityNumber.WARN_3, Severity.WARN3),
Arguments.of(SeverityNumber.WARN_4, Severity.WARN4),
Arguments.of(SeverityNumber.ERROR, Severity.ERROR),
Arguments.of(SeverityNumber.ERROR_2, Severity.ERROR2),
Arguments.of(SeverityNumber.ERROR_3, Severity.ERROR3),
Arguments.of(SeverityNumber.ERROR_4, Severity.ERROR4),
Arguments.of(SeverityNumber.FATAL, Severity.FATAL),
Arguments.of(SeverityNumber.FATAL_2, Severity.FATAL2),
Arguments.of(SeverityNumber.FATAL_3, Severity.FATAL3),
Arguments.of(SeverityNumber.FATAL_4, Severity.FATAL4));
}
}
Loading