Skip to content

Commit 20645f7

Browse files
committed
PR comments addressed
1 parent e3cbee7 commit 20645f7

File tree

3 files changed

+23
-38
lines changed

3 files changed

+23
-38
lines changed

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

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import io.opentelemetry.api.logs.Logger;
1010
import io.opentelemetry.context.Context;
1111
import io.opentelemetry.sdk.common.CompletableResultCode;
12-
import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor;
1312
import java.io.Closeable;
1413
import java.util.ArrayList;
1514
import java.util.Arrays;
@@ -37,30 +36,18 @@ static LogRecordProcessor composite(LogRecordProcessor... processors) {
3736
/**
3837
* Returns a {@link LogRecordProcessor} which simply delegates to all processing to the {@code
3938
* processors} in order.
40-
*
41-
* <p>Note that if there are {@link BatchLogRecordProcessor} including, they are enforced to end
42-
* of the processor pipeline.
4339
*/
4440
static LogRecordProcessor composite(Iterable<LogRecordProcessor> processors) {
4541
List<LogRecordProcessor> processorList = new ArrayList<>();
46-
List<BatchLogRecordProcessor> batchProcessors = new ArrayList<>();
4742
for (LogRecordProcessor processor : processors) {
48-
if (!BatchLogRecordProcessor.class.equals(processor.getClass())) {
49-
processorList.add(processor);
50-
} else {
51-
batchProcessors.add((BatchLogRecordProcessor) processor);
52-
}
43+
processorList.add(processor);
5344
}
54-
processorList.addAll(batchProcessors);
55-
5645
if (processorList.isEmpty()) {
5746
return NoopLogRecordProcessor.getInstance();
5847
}
59-
6048
if (processorList.size() == 1) {
6149
return processorList.get(0);
6250
}
63-
6451
return MultiLogRecordProcessor.create(processorList);
6552
}
6653

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,24 @@ public SdkLoggerProviderBuilder addLogRecordProcessor(LogRecordProcessor process
9696
return this;
9797
}
9898

99+
/**
100+
* Add a log processor as first. {@link LogRecordProcessor#onEmit(Context, ReadWriteLogRecord)}
101+
* will be called each time a log is emitted by {@link Logger} instances obtained from the {@link
102+
* SdkLoggerProvider}.
103+
*
104+
* <p>Compared to {@link SdkLoggerProviderBuilder#addLogRecordProcessor(LogRecordProcessor)}, this
105+
* method adds the processor to the beginning of the processor pipeline. So the {@code processor}
106+
* given will be executed before than the other processors already added.
107+
*
108+
* @param processor the log processor
109+
* @return this
110+
*/
111+
public SdkLoggerProviderBuilder addLogRecordProcessorFirst(LogRecordProcessor processor) {
112+
requireNonNull(processor, "processor");
113+
logRecordProcessors.add(0, processor);
114+
return this;
115+
}
116+
99117
/**
100118
* Assign a {@link Clock}.
101119
*

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

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import io.opentelemetry.sdk.common.CompletableResultCode;
3030
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
3131
import io.opentelemetry.sdk.logs.data.LogRecordData;
32-
import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor;
3332
import io.opentelemetry.sdk.resources.Resource;
3433
import java.util.Optional;
3534
import java.util.concurrent.TimeUnit;
@@ -125,31 +124,12 @@ void builder_clockProvided() {
125124

126125
@Test
127126
void builder_multipleProcessors() {
127+
LogRecordProcessor firstProcessor = mock(LogRecordProcessor.class);
128128
assertThat(
129129
SdkLoggerProvider.builder()
130130
.addLogRecordProcessor(logRecordProcessor)
131131
.addLogRecordProcessor(logRecordProcessor)
132-
.build())
133-
.extracting("sharedState", as(InstanceOfAssertFactories.type(LoggerSharedState.class)))
134-
.extracting(LoggerSharedState::getLogRecordProcessor)
135-
.satisfies(
136-
activeLogRecordProcessor -> {
137-
assertThat(activeLogRecordProcessor).isInstanceOf(MultiLogRecordProcessor.class);
138-
assertThat(activeLogRecordProcessor)
139-
.extracting(
140-
"logRecordProcessors",
141-
as(InstanceOfAssertFactories.list(LogRecordProcessor.class)))
142-
.hasSize(2);
143-
});
144-
}
145-
146-
@Test
147-
void builder_multipleProcessorsWithBatchProcessor() {
148-
assertThat(
149-
SdkLoggerProvider.builder()
150-
.addLogRecordProcessor(mock(BatchLogRecordProcessor.class))
151-
.addLogRecordProcessor(logRecordProcessor)
152-
.addLogRecordProcessor(logRecordProcessor)
132+
.addLogRecordProcessorFirst(firstProcessor)
153133
.build())
154134
.extracting("sharedState", as(InstanceOfAssertFactories.type(LoggerSharedState.class)))
155135
.extracting(LoggerSharedState::getLogRecordProcessor)
@@ -161,8 +141,8 @@ void builder_multipleProcessorsWithBatchProcessor() {
161141
"logRecordProcessors",
162142
as(InstanceOfAssertFactories.list(LogRecordProcessor.class)))
163143
.hasSize(3)
164-
.last()
165-
.isInstanceOf(BatchLogRecordProcessor.class);
144+
.first()
145+
.isEqualTo(firstProcessor);
166146
});
167147
}
168148

0 commit comments

Comments
 (0)