Skip to content

Commit 4f67bfc

Browse files
committed
Add OpenTelemetryAppender.resetForTest()
1 parent 4dc7989 commit 4f67bfc

6 files changed

Lines changed: 54 additions & 9 deletions

File tree

instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.concurrent.locks.ReadWriteLock;
3333
import java.util.concurrent.locks.ReentrantReadWriteLock;
3434
import java.util.function.BiConsumer;
35+
import java.util.function.Consumer;
3536
import javax.annotation.Nullable;
3637
import org.apache.logging.log4j.LogManager;
3738
import org.apache.logging.log4j.ThreadContext;
@@ -72,6 +73,14 @@ public class OpenTelemetryAppender extends AbstractAppender {
7273
* the {@link LoggerContext}.
7374
*/
7475
public static void install(OpenTelemetry openTelemetry) {
76+
forEachAppender(appender -> appender.setOpenTelemetry(openTelemetry));
77+
}
78+
79+
static void resetForTest() {
80+
forEachAppender(OpenTelemetryAppender::resetAppenderForTest);
81+
}
82+
83+
private static void forEachAppender(Consumer<OpenTelemetryAppender> consumer) {
7584
org.apache.logging.log4j.spi.LoggerContext loggerContextSpi = LogManager.getContext(false);
7685
if (!(loggerContextSpi instanceof LoggerContext)) {
7786
return;
@@ -84,7 +93,7 @@ public static void install(OpenTelemetry openTelemetry) {
8493
.forEach(
8594
appender -> {
8695
if (appender instanceof OpenTelemetryAppender) {
87-
((OpenTelemetryAppender) appender).setOpenTelemetry(openTelemetry);
96+
consumer.accept((OpenTelemetryAppender) appender);
8897
}
8998
});
9099
}
@@ -295,6 +304,18 @@ public void setOpenTelemetry(OpenTelemetry openTelemetry) {
295304
}
296305
}
297306

307+
private void resetAppenderForTest() {
308+
Lock writeLock = lock.writeLock();
309+
writeLock.lock();
310+
try {
311+
openTelemetry = null;
312+
eventsToReplay.clear();
313+
replayLimitWarningLogged.set(false);
314+
} finally {
315+
writeLock.unlock();
316+
}
317+
}
318+
298319
@SuppressWarnings("SystemOut")
299320
@Override
300321
public void append(LogEvent event) {

instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ static void generalBeforeEachSetup() {
4646
@AfterAll
4747
static void cleanupAll() {
4848
// This is to make sure that other test classes don't have issues with the logger provider set
49-
OpenTelemetryAppender.install(null);
49+
OpenTelemetryAppender.resetForTest();
5050
}
5151

5252
protected abstract InstrumentationExtension getTesting();

instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ void setup() {
2626

2727
@AfterAll
2828
static void cleanup() {
29-
OpenTelemetryAppender.install(null);
29+
OpenTelemetryAppender.resetForTest();
3030
}
3131

3232
@Override

instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogReplayOpenTelemetryAppenderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ void setup() {
3535

3636
@AfterEach
3737
void resetOpenTelemetry() {
38-
OpenTelemetryAppender.install(null);
38+
OpenTelemetryAppender.resetForTest();
3939
}
4040

4141
@Override

instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/OpenTelemetryAppender.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.concurrent.locks.Lock;
2626
import java.util.concurrent.locks.ReadWriteLock;
2727
import java.util.concurrent.locks.ReentrantReadWriteLock;
28+
import java.util.function.Consumer;
2829
import org.slf4j.ILoggerFactory;
2930
import org.slf4j.LoggerFactory;
3031
import org.slf4j.MDC;
@@ -60,23 +61,34 @@ public OpenTelemetryAppender() {}
6061
* the {@link LoggerContext}.
6162
*/
6263
public static void install(OpenTelemetry openTelemetry) {
64+
forEachAppender(appender -> appender.setOpenTelemetry(openTelemetry));
65+
}
66+
67+
static void resetForTest() {
68+
forEachAppender(OpenTelemetryAppender::resetAppenderForTest);
69+
}
70+
71+
private static void forEachAppender(Consumer<OpenTelemetryAppender> consumer) {
6372
ILoggerFactory loggerFactorySpi = LoggerFactory.getILoggerFactory();
6473
if (!(loggerFactorySpi instanceof LoggerContext)) {
6574
return;
6675
}
6776
LoggerContext loggerContext = (LoggerContext) loggerFactorySpi;
6877
for (Logger logger : loggerContext.getLoggerList()) {
69-
logger.iteratorForAppenders().forEachRemaining(appender -> install(openTelemetry, appender));
78+
logger
79+
.iteratorForAppenders()
80+
.forEachRemaining(appender -> forEachAppender(consumer, appender));
7081
}
7182
}
7283

73-
private static void install(OpenTelemetry openTelemetry, Appender<?> appender) {
84+
private static void forEachAppender(
85+
Consumer<OpenTelemetryAppender> consumer, Appender<?> appender) {
7486
if (appender instanceof OpenTelemetryAppender) {
75-
((OpenTelemetryAppender) appender).setOpenTelemetry(openTelemetry);
87+
consumer.accept((OpenTelemetryAppender) appender);
7688
} else if (appender instanceof AppenderAttachable) {
7789
((AppenderAttachable<?>) appender)
7890
.iteratorForAppenders()
79-
.forEachRemaining(a -> OpenTelemetryAppender.install(openTelemetry, a));
91+
.forEachRemaining(a -> forEachAppender(consumer, a));
8092
}
8193
}
8294

@@ -271,6 +283,18 @@ public void setOpenTelemetry(OpenTelemetry openTelemetry) {
271283
}
272284
}
273285

286+
private void resetAppenderForTest() {
287+
Lock writeLock = lock.writeLock();
288+
writeLock.lock();
289+
try {
290+
openTelemetry = null;
291+
eventsToReplay.clear();
292+
replayLimitWarningLogged.set(false);
293+
} finally {
294+
writeLock.unlock();
295+
}
296+
}
297+
274298
private void emit(OpenTelemetry openTelemetry, ILoggingEvent event) {
275299
mapper.emit(openTelemetry.getLogsBridge(), event, -1);
276300
}

instrumentation/logback/logback-appender-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/LogbackTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ void setUp() {
3131

3232
@AfterEach
3333
void tearDown() {
34-
OpenTelemetryAppender.install(null);
34+
OpenTelemetryAppender.resetForTest();
3535
}
3636

3737
@Override

0 commit comments

Comments
 (0)