Skip to content

Commit 67b7358

Browse files
committed
Move implementation and add tests
1 parent f607dc9 commit 67b7358

File tree

3 files changed

+77
-12
lines changed

3 files changed

+77
-12
lines changed

sdk/logs/src/main/java/io/opentelemetry/sdk/logs/ExtendedSdkLogRecordBuilder.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder;
1212
import io.opentelemetry.api.logs.Severity;
1313
import io.opentelemetry.api.trace.Span;
14+
import io.opentelemetry.api.trace.SpanContext;
1415
import io.opentelemetry.context.Context;
1516
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
1617
import io.opentelemetry.sdk.internal.ExtendedAttributesMap;
@@ -135,18 +136,12 @@ public void emit() {
135136
return;
136137
}
137138

138-
if (severity != Severity.UNDEFINED_SEVERITY_NUMBER
139-
&& severity.getSeverityNumber() < logger.minimumSeverity) {
140-
return;
141-
}
142-
143139
Context context = this.context == null ? Context.current() : this.context;
144-
if (logger.traceBased) {
145-
Span span = Span.fromContext(context);
146-
if (span.getSpanContext().isValid() && !span.getSpanContext().getTraceFlags().isSampled()) {
147-
return;
148-
}
140+
Span span = Span.fromContext(context);
141+
if (shouldDropLog(span)) {
142+
return;
149143
}
144+
SpanContext spanContext = span.getSpanContext();
150145

151146
long observedTimestampEpochNanos =
152147
this.observedTimestampEpochNanos == 0
@@ -163,7 +158,7 @@ public void emit() {
163158
eventName,
164159
timestampEpochNanos,
165160
observedTimestampEpochNanos,
166-
Span.fromContext(context).getSpanContext(),
161+
spanContext,
167162
severity,
168163
severityText,
169164
body,

sdk/logs/src/main/java/io/opentelemetry/sdk/logs/SdkLogRecordBuilder.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.opentelemetry.api.logs.LogRecordBuilder;
1111
import io.opentelemetry.api.logs.Severity;
1212
import io.opentelemetry.api.trace.Span;
13+
import io.opentelemetry.api.trace.SpanContext;
1314
import io.opentelemetry.context.Context;
1415
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
1516
import io.opentelemetry.sdk.internal.AttributesMap;
@@ -125,6 +126,11 @@ public void emit() {
125126
return;
126127
}
127128
Context context = this.context == null ? Context.current() : this.context;
129+
Span span = Span.fromContext(context);
130+
if (shouldDropLog(span)) {
131+
return;
132+
}
133+
SpanContext spanContext = span.getSpanContext();
128134
long observedTimestampEpochNanos =
129135
this.observedTimestampEpochNanos == 0
130136
? this.loggerSharedState.getClock().now()
@@ -139,11 +145,28 @@ public void emit() {
139145
instrumentationScopeInfo,
140146
timestampEpochNanos,
141147
observedTimestampEpochNanos,
142-
Span.fromContext(context).getSpanContext(),
148+
spanContext,
143149
severity,
144150
severityText,
145151
body,
146152
attributes,
147153
eventName));
148154
}
155+
156+
/** Returns {@code true} when filters require dropping the log. */
157+
protected boolean shouldDropLog(Span span) {
158+
if (severity != Severity.UNDEFINED_SEVERITY_NUMBER
159+
&& severity.getSeverityNumber() < logger.minimumSeverity) {
160+
return true;
161+
}
162+
163+
if (logger.traceBased) {
164+
SpanContext spanContext = span.getSpanContext();
165+
if (spanContext.isValid() && !spanContext.getTraceFlags().isSampled()) {
166+
return true;
167+
}
168+
}
169+
170+
return false;
171+
}
149172
}

sdk/logs/src/test/java/io/opentelemetry/sdk/logs/SdkLogRecordBuilderTest.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,51 @@ void testConvenienceAttributeMethods() {
140140
equalTo(booleanKey("bk"), true),
141141
equalTo(longKey("ik"), 13L));
142142
}
143+
144+
@Test
145+
void emitDropsBelowMinimumSeverity() {
146+
LoggerConfig config =
147+
LoggerConfig.builder().setMinimumSeverity(Severity.INFO.getSeverityNumber()).build();
148+
SdkLogger logger = new SdkLogger(loggerSharedState, SCOPE_INFO, config);
149+
builder = new SdkLogRecordBuilder(loggerSharedState, SCOPE_INFO, logger);
150+
151+
builder.setBody("too-low").setSeverity(Severity.DEBUG).emit();
152+
assertThat(emittedLog.get()).isNull();
153+
154+
builder.setBody("allowed").setSeverity(Severity.INFO).emit();
155+
assertThat(emittedLog.get().toLogRecordData()).hasBody("allowed");
156+
}
157+
158+
@Test
159+
void emitDropsUnsampledTraceWhenTraceBased() {
160+
LoggerConfig config = LoggerConfig.builder().setTraceBased(true).build();
161+
SdkLogger logger = new SdkLogger(loggerSharedState, SCOPE_INFO, config);
162+
builder = new SdkLogRecordBuilder(loggerSharedState, SCOPE_INFO, logger);
163+
164+
SpanContext unsampledSpanContext =
165+
SpanContext.create(
166+
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
167+
"bbbbbbbbbbbbbbbb",
168+
TraceFlags.getDefault(),
169+
TraceState.getDefault());
170+
builder
171+
.setBody("unsampled")
172+
.setContext(Span.wrap(unsampledSpanContext).storeInContext(Context.root()))
173+
.emit();
174+
assertThat(emittedLog.get()).isNull();
175+
176+
SpanContext sampledSpanContext =
177+
SpanContext.create(
178+
"cccccccccccccccccccccccccccccccc",
179+
"dddddddddddddddd",
180+
TraceFlags.getSampled(),
181+
TraceState.getDefault());
182+
builder
183+
.setBody("sampled")
184+
.setContext(Span.wrap(sampledSpanContext).storeInContext(Context.root()))
185+
.emit();
186+
assertThat(emittedLog.get().toLogRecordData())
187+
.hasSpanContext(sampledSpanContext)
188+
.hasBody("sampled");
189+
}
143190
}

0 commit comments

Comments
 (0)