Skip to content

Commit f7324ec

Browse files
authored
Add support for new logger config minimum_severity and trace_based properties (#7940)
1 parent a988380 commit f7324ec

File tree

2 files changed

+112
-4
lines changed

2 files changed

+112
-4
lines changed

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactory.java

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,20 @@
77

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

10+
import io.opentelemetry.api.logs.Severity;
1011
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerConfigModel;
1112
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerConfiguratorModel;
1213
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerMatcherAndConfigModel;
1314
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordProcessorModel;
1415
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LoggerProviderModel;
16+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel.SeverityNumber;
1517
import io.opentelemetry.sdk.internal.ScopeConfigurator;
1618
import io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder;
1719
import io.opentelemetry.sdk.logs.LogLimits;
1820
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
1921
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
2022
import io.opentelemetry.sdk.logs.internal.LoggerConfig;
23+
import io.opentelemetry.sdk.logs.internal.LoggerConfigBuilder;
2124
import io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil;
2225
import java.util.List;
2326

@@ -97,10 +100,72 @@ private static class LoggerConfigFactory
97100
@Override
98101
public LoggerConfig create(
99102
ExperimentalLoggerConfigModel model, DeclarativeConfigContext context) {
103+
LoggerConfigBuilder configBuilder = LoggerConfig.builder();
100104
if (model.getDisabled() != null && model.getDisabled()) {
101-
return LoggerConfig.disabled();
105+
configBuilder.setEnabled(false);
102106
}
103-
return LoggerConfig.defaultConfig();
107+
if (model.getTraceBased() != null && model.getTraceBased()) {
108+
configBuilder.setTraceBased(true);
109+
}
110+
if (model.getMinimumSeverity() != null) {
111+
configBuilder.setMinimumSeverity(severityNumberToSeverity(model.getMinimumSeverity()));
112+
}
113+
return configBuilder.build();
114+
}
115+
}
116+
117+
// Visible for testing
118+
static Severity severityNumberToSeverity(SeverityNumber model) {
119+
switch (model) {
120+
case TRACE:
121+
return Severity.TRACE;
122+
case TRACE_2:
123+
return Severity.TRACE2;
124+
case TRACE_3:
125+
return Severity.TRACE3;
126+
case TRACE_4:
127+
return Severity.TRACE4;
128+
case DEBUG:
129+
return Severity.DEBUG;
130+
case DEBUG_2:
131+
return Severity.DEBUG2;
132+
case DEBUG_3:
133+
return Severity.DEBUG3;
134+
case DEBUG_4:
135+
return Severity.DEBUG4;
136+
case INFO:
137+
return Severity.INFO;
138+
case INFO_2:
139+
return Severity.INFO2;
140+
case INFO_3:
141+
return Severity.INFO3;
142+
case INFO_4:
143+
return Severity.INFO4;
144+
case WARN:
145+
return Severity.WARN;
146+
case WARN_2:
147+
return Severity.WARN2;
148+
case WARN_3:
149+
return Severity.WARN3;
150+
case WARN_4:
151+
return Severity.WARN4;
152+
case ERROR:
153+
return Severity.ERROR;
154+
case ERROR_2:
155+
return Severity.ERROR2;
156+
case ERROR_3:
157+
return Severity.ERROR3;
158+
case ERROR_4:
159+
return Severity.ERROR4;
160+
case FATAL:
161+
return Severity.FATAL;
162+
case FATAL_2:
163+
return Severity.FATAL2;
164+
case FATAL_3:
165+
return Severity.FATAL3;
166+
case FATAL_4:
167+
return Severity.FATAL4;
104168
}
169+
throw new IllegalArgumentException("Unrecognized severity number: " + model);
105170
}
106171
}

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactoryTest.java

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil.setLoggerConfigurator;
99
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
1010

11+
import io.opentelemetry.api.logs.Severity;
1112
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
1213
import io.opentelemetry.internal.testing.CleanupExtension;
1314
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
@@ -20,6 +21,7 @@
2021
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordLimitsModel;
2122
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordProcessorModel;
2223
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LoggerProviderModel;
24+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel.SeverityNumber;
2325
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpHttpExporterModel;
2426
import io.opentelemetry.sdk.internal.ScopeConfigurator;
2527
import io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder;
@@ -92,13 +94,20 @@ private static Stream<Arguments> createArguments() {
9294
.withName("foo")
9395
.withConfig(
9496
new ExperimentalLoggerConfigModel()
95-
.withDisabled(false)))))),
97+
.withDisabled(false)
98+
.withTraceBased(true)
99+
.withMinimumSeverity(SeverityNumber.INFO)))))),
96100
setLoggerConfigurator(
97101
SdkLoggerProvider.builder(),
98102
ScopeConfigurator.<LoggerConfig>builder()
99103
.setDefault(LoggerConfig.disabled())
100104
.addCondition(
101-
ScopeConfiguratorBuilder.nameMatchesGlob("foo"), LoggerConfig.enabled())
105+
ScopeConfiguratorBuilder.nameMatchesGlob("foo"),
106+
LoggerConfig.builder()
107+
.setEnabled(true)
108+
.setTraceBased(true)
109+
.setMinimumSeverity(Severity.INFO)
110+
.build())
102111
.build())
103112
.setLogLimits(
104113
() ->
@@ -112,4 +121,38 @@ private static Stream<Arguments> createArguments() {
112121
.build())
113122
.build()));
114123
}
124+
125+
@ParameterizedTest
126+
@MethodSource("severityNumberArguments")
127+
void severityNumber(SeverityNumber model, Severity expectedSeverity) {
128+
assertThat(LoggerProviderFactory.severityNumberToSeverity(model)).isEqualTo(expectedSeverity);
129+
}
130+
131+
private static Stream<Arguments> severityNumberArguments() {
132+
return Stream.of(
133+
Arguments.of(SeverityNumber.TRACE, Severity.TRACE),
134+
Arguments.of(SeverityNumber.TRACE_2, Severity.TRACE2),
135+
Arguments.of(SeverityNumber.TRACE_3, Severity.TRACE3),
136+
Arguments.of(SeverityNumber.TRACE_4, Severity.TRACE4),
137+
Arguments.of(SeverityNumber.DEBUG, Severity.DEBUG),
138+
Arguments.of(SeverityNumber.DEBUG_2, Severity.DEBUG2),
139+
Arguments.of(SeverityNumber.DEBUG_3, Severity.DEBUG3),
140+
Arguments.of(SeverityNumber.DEBUG_4, Severity.DEBUG4),
141+
Arguments.of(SeverityNumber.INFO, Severity.INFO),
142+
Arguments.of(SeverityNumber.INFO_2, Severity.INFO2),
143+
Arguments.of(SeverityNumber.INFO_3, Severity.INFO3),
144+
Arguments.of(SeverityNumber.INFO_4, Severity.INFO4),
145+
Arguments.of(SeverityNumber.WARN, Severity.WARN),
146+
Arguments.of(SeverityNumber.WARN_2, Severity.WARN2),
147+
Arguments.of(SeverityNumber.WARN_3, Severity.WARN3),
148+
Arguments.of(SeverityNumber.WARN_4, Severity.WARN4),
149+
Arguments.of(SeverityNumber.ERROR, Severity.ERROR),
150+
Arguments.of(SeverityNumber.ERROR_2, Severity.ERROR2),
151+
Arguments.of(SeverityNumber.ERROR_3, Severity.ERROR3),
152+
Arguments.of(SeverityNumber.ERROR_4, Severity.ERROR4),
153+
Arguments.of(SeverityNumber.FATAL, Severity.FATAL),
154+
Arguments.of(SeverityNumber.FATAL_2, Severity.FATAL2),
155+
Arguments.of(SeverityNumber.FATAL_3, Severity.FATAL3),
156+
Arguments.of(SeverityNumber.FATAL_4, Severity.FATAL4));
157+
}
115158
}

0 commit comments

Comments
 (0)