Skip to content

Commit

Permalink
More
Browse files Browse the repository at this point in the history
  • Loading branch information
trask committed Jun 10, 2023
1 parent 56314cb commit e312233
Show file tree
Hide file tree
Showing 65 changed files with 420 additions and 478 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class JavaagentTestArgumentsProvider(
"-Dotel.javaagent.testing.javaagent-jar-path=${agentShadowJar.absolutePath}",
"-Dotel.javaagent.experimental.initializer.jar=${shadowJar.absolutePath}",
"-Dotel.javaagent.testing.additional-library-ignores.enabled=false",
"-Dotel.javaagent.testing.fail-on-context-leak=${findProperty("failOnContextLeak")!=false}",
"-Dotel.javaagent.testing.fail-on-context-leak=${findProperty("failOnContextLeak") != false}",
// prevent sporadic gradle deadlocks, see SafeLogger for more details
"-Dotel.javaagent.testing.transform-safe-logging.enabled=true",
// Reduce noise in assertion messages since we don't need to verify this in most tests. We check
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
package io.opentelemetry.javaagent.instrumentation.jul;

import application.java.util.logging.Logger;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.api.logs.GlobalLoggerProvider;
import io.opentelemetry.api.logs.LogRecordBuilder;
import io.opentelemetry.api.logs.Severity;
import io.opentelemetry.context.Context;
Expand Down Expand Up @@ -41,7 +41,11 @@ public static void capture(Logger logger, LogRecord logRecord) {
instrumentationName = "ROOT";
}
LogRecordBuilder builder =
GlobalLoggerProvider.get().loggerBuilder(instrumentationName).build().logRecordBuilder();
GlobalOpenTelemetry.get()
.getLogsBridge()
.loggerBuilder(instrumentationName)
.build()
.logRecordBuilder();
mapLogRecord(builder, logRecord);
builder.emit();
}
Expand Down Expand Up @@ -80,6 +84,8 @@ private static void mapLogRecord(LogRecordBuilder builder, LogRecord logRecord)
// throwable
Throwable throwable = logRecord.getThrown();
if (throwable != null) {
// TODO (trask) extract method for recording exception into
// io.opentelemetry:opentelemetry-api
attributes.put(SemanticAttributes.EXCEPTION_TYPE, throwable.getClass().getName());
attributes.put(SemanticAttributes.EXCEPTION_MESSAGE, throwable.getMessage());
StringWriter writer = new StringWriter();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@

import static java.util.Collections.emptyList;

import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.api.logs.GlobalLoggerProvider;
import io.opentelemetry.api.logs.LogRecordBuilder;
import io.opentelemetry.api.logs.Severity;
import io.opentelemetry.context.Context;
Expand Down Expand Up @@ -58,7 +58,11 @@ public void capture(Logger logger, ExtLogRecord record) {
}

LogRecordBuilder builder =
GlobalLoggerProvider.get().loggerBuilder(instrumentationName).build().logRecordBuilder();
GlobalOpenTelemetry.get()
.getLogsBridge()
.loggerBuilder(instrumentationName)
.build()
.logRecordBuilder();

String message = record.getFormattedMessage();
if (message != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class Jms2Test extends AgentInstrumentationSpecification {
serverLocator.close()

def connectionFactory = HornetQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF,
new TransportConfiguration(InVMConnectorFactory.name))
new TransportConfiguration(InVMConnectorFactory.name))

def connection = connectionFactory.createConnection()
connection.start()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
* SPDX-License-Identifier: Apache-2.0
*/


import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
import io.opentelemetry.instrumentation.test.asserts.TraceAssert
import io.opentelemetry.sdk.trace.data.SpanData
Expand All @@ -17,7 +16,11 @@ import org.testcontainers.containers.output.Slf4jLogConsumer
import spock.lang.Shared
import spock.lang.Unroll

import javax.jms.*
import javax.jms.Connection
import javax.jms.Message
import javax.jms.MessageListener
import javax.jms.Session
import javax.jms.TextMessage
import java.util.concurrent.CountDownLatch
import java.util.concurrent.atomic.AtomicReference

Expand All @@ -30,8 +33,8 @@ class Jms1Test extends AgentInstrumentationSpecification {
private static final Logger logger = LoggerFactory.getLogger(Jms1Test)

private static final GenericContainer broker = new GenericContainer("rmohr/activemq:latest")
.withExposedPorts(61616, 8161)
.withLogConsumer(new Slf4jLogConsumer(logger))
.withExposedPorts(61616, 8161)
.withLogConsumer(new Slf4jLogConsumer(logger))

@Shared
String messageText = "a message"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,7 @@ static void tearDown() throws JMSException {

@ArgumentsSource(DestinationsProvider.class)
@ParameterizedTest
void testMessageConsumer(
DestinationFactory destinationFactory, boolean isTemporary)
void testMessageConsumer(DestinationFactory destinationFactory, boolean isTemporary)
throws JMSException {

// given
Expand Down Expand Up @@ -172,8 +171,7 @@ void testMessageConsumer(

@ArgumentsSource(DestinationsProvider.class)
@ParameterizedTest
void testMessageListener(
DestinationFactory destinationFactory, boolean isTemporary)
void testMessageListener(DestinationFactory destinationFactory, boolean isTemporary)
throws Exception {

// given
Expand Down Expand Up @@ -254,8 +252,7 @@ void shouldNotEmitTelemetryOnEmptyReceive(

@ArgumentsSource(DestinationsProvider.class)
@ParameterizedTest
void shouldCaptureMessageHeaders(
DestinationFactory destinationFactory, boolean isTemporary)
void shouldCaptureMessageHeaders(DestinationFactory destinationFactory, boolean isTemporary)
throws Exception {

// given
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ class KafkaStreamsDefaultTest extends KafkaStreamsBaseTest {
}
KStream<Integer, String> textLines = builder.stream(STREAM_PENDING)
def values = textLines
.mapValues(new ValueMapper<String, String>() {
@Override
String apply(String textLine) {
Span.current().setAttribute("asdf", "testing")
return textLine.toLowerCase()
}
})
.mapValues(new ValueMapper<String, String>() {
@Override
String apply(String textLine) {
Span.current().setAttribute("asdf", "testing")
return textLine.toLowerCase()
}
})

KafkaStreams streams
try {
Expand All @@ -57,7 +57,7 @@ class KafkaStreamsDefaultTest extends KafkaStreamsBaseTest {
streams = new KafkaStreams(builder, config)
} catch (MissingMethodException e) {
def producer = Class.forName("org.apache.kafka.streams.kstream.Produced")
.with(Serdes.Integer(), Serdes.String())
.with(Serdes.Integer(), Serdes.String())
values.to(STREAM_PROCESSED, producer)
streams = new KafkaStreams(builder.build(), config)
}
Expand All @@ -84,9 +84,9 @@ class KafkaStreamsDefaultTest extends KafkaStreamsBaseTest {

assertTraces(3) {
traces.sort(orderByRootSpanName(
STREAM_PENDING + " send",
STREAM_PENDING + " receive",
STREAM_PROCESSED + " receive"))
STREAM_PENDING + " send",
STREAM_PENDING + " receive",
STREAM_PROCESSED + " receive"))

SpanData producerPending, producerProcessed

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ class KafkaStreamsSuppressReceiveSpansTest extends KafkaStreamsBaseTest {
}
KStream<Integer, String> textLines = builder.stream(STREAM_PENDING)
def values = textLines
.mapValues(new ValueMapper<String, String>() {
@Override
String apply(String textLine) {
Span.current().setAttribute("asdf", "testing")
return textLine.toLowerCase()
}
})
.mapValues(new ValueMapper<String, String>() {
@Override
String apply(String textLine) {
Span.current().setAttribute("asdf", "testing")
return textLine.toLowerCase()
}
})

KafkaStreams streams
try {
Expand All @@ -57,7 +57,7 @@ class KafkaStreamsSuppressReceiveSpansTest extends KafkaStreamsBaseTest {
streams = new KafkaStreams(builder, config)
} catch (MissingMethodException e) {
def producer = Class.forName("org.apache.kafka.streams.kstream.Produced")
.with(Serdes.Integer(), Serdes.String())
.with(Serdes.Integer(), Serdes.String())
values.to(STREAM_PROCESSED, producer)
streams = new KafkaStreams(builder.build(), config)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@

import static java.util.Collections.emptyList;

import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.api.logs.GlobalLoggerProvider;
import io.opentelemetry.api.logs.LogRecordBuilder;
import io.opentelemetry.api.logs.Severity;
import io.opentelemetry.context.Context;
Expand Down Expand Up @@ -64,7 +64,11 @@ public void capture(Category logger, Priority level, Object message, Throwable t
instrumentationName = "ROOT";
}
LogRecordBuilder builder =
GlobalLoggerProvider.get().loggerBuilder(instrumentationName).build().logRecordBuilder();
GlobalOpenTelemetry.get()
.getLogsBridge()
.loggerBuilder(instrumentationName)
.build()
.logRecordBuilder();

// message
if (message != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import static java.util.Collections.emptyList;

import io.opentelemetry.api.logs.GlobalLoggerProvider;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.logs.LogRecordBuilder;
import io.opentelemetry.instrumentation.log4j.appender.v2_17.internal.ContextDataAccessor;
import io.opentelemetry.instrumentation.log4j.appender.v2_17.internal.LogEventMapper;
Expand Down Expand Up @@ -59,7 +59,11 @@ public static void capture(
instrumentationName = "ROOT";
}
LogRecordBuilder builder =
GlobalLoggerProvider.get().loggerBuilder(instrumentationName).build().logRecordBuilder();
GlobalOpenTelemetry.get()
.getLogsBridge()
.loggerBuilder(instrumentationName)
.build()
.logRecordBuilder();
Map<String, String> contextData = ThreadContext.getImmutableContext();
mapper.mapLogEvent(builder, message, level, marker, throwable, contextData);
builder.emit();
Expand Down
15 changes: 2 additions & 13 deletions instrumentation/log4j/log4j-appender-2.17/library/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ release](https://search.maven.org/search?q=g:io.opentelemetry.instrumentation%20
For Maven, add to your `pom.xml` dependencies:

```xml

<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
Expand Down Expand Up @@ -53,17 +54,5 @@ The following demonstrates how you might configure the appender in your `log4j.x
</Configuration>
```

Next, configure `GlobalLoggerProvider` with an `SdkLoggerProvider` in your application.

```
SdkLoggerProvider sdkLoggerProvider =
SdkLoggerProvider.builder()
.setResource(Resource.create(...))
.addLogProcessor(...)
.build();
GlobalLoggerProvider.set(sdkLoggerProvider);
```

In this example Log4j2 log events will be sent to both the console appender and
the `OpenTelemetryAppender`, which will drop the logs until `GlobalLoggerProvider.set(..)` is
called. Once initialized, logs will be emitted to a `Logger` obtained from the `SdkLoggerProvider`.
the `OpenTelemetryAppender`.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import static java.util.Collections.emptyList;

import com.google.errorprone.annotations.CanIgnoreReturnValue;
import io.opentelemetry.api.logs.GlobalLoggerProvider;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.logs.LogRecordBuilder;
import io.opentelemetry.instrumentation.log4j.appender.v2_17.internal.ContextDataAccessor;
import io.opentelemetry.instrumentation.log4j.appender.v2_17.internal.LogEventMapper;
Expand Down Expand Up @@ -146,7 +146,11 @@ public void append(LogEvent event) {
instrumentationName = "ROOT";
}
LogRecordBuilder builder =
GlobalLoggerProvider.get().loggerBuilder(instrumentationName).build().logRecordBuilder();
GlobalOpenTelemetry.get()
.getLogsBridge()
.loggerBuilder(instrumentationName)
.build()
.logRecordBuilder();
ReadOnlyStringMap contextData = event.getContextData();
mapper.mapLogEvent(
builder,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,17 @@
package io.opentelemetry.instrumentation.log4j.appender.v2_17;

import static io.opentelemetry.api.common.AttributeKey.stringKey;
import static io.opentelemetry.sdk.testing.assertj.LogAssertions.assertThat;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;

import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.logs.GlobalLoggerProvider;
import io.opentelemetry.api.logs.Severity;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanContext;
import io.opentelemetry.context.Scope;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
import io.opentelemetry.sdk.logs.data.LogRecordData;
Expand Down Expand Up @@ -60,8 +61,8 @@ static void setupAll() {
.addLogRecordProcessor(SimpleLogRecordProcessor.create(logRecordExporter))
.build();

GlobalLoggerProvider.resetForTest();
GlobalLoggerProvider.set(loggerProvider);
GlobalOpenTelemetry.resetForTest();
GlobalOpenTelemetry.set(OpenTelemetrySdk.builder().setLoggerProvider(loggerProvider).build());
}

@BeforeEach
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;

import ch.qos.logback.classic.spi.ILoggingEvent;
import io.opentelemetry.api.logs.GlobalLoggerProvider;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.logs.LoggerProvider;
import io.opentelemetry.javaagent.bootstrap.CallDepth;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
Expand Down Expand Up @@ -51,7 +51,7 @@ public static void methodEnter(
// logging framework delegates to another
callDepth = CallDepth.forClass(LoggerProvider.class);
if (callDepth.getAndIncrement() == 0) {
mapper().emit(GlobalLoggerProvider.get(), event);
mapper().emit(GlobalOpenTelemetry.get().getLogsBridge(), event);
}
}

Expand Down
15 changes: 2 additions & 13 deletions instrumentation/logback/logback-appender-1.0/library/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ release](https://search.maven.org/search?q=g:io.opentelemetry.instrumentation%20
For Maven, add to your `pom.xml` dependencies:

```xml

<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
Expand Down Expand Up @@ -57,17 +58,5 @@ The following demonstrates how you might configure the appender in your `logback
</configuration>
```

Next, configure `GlobalLoggerProvider` with an `SdkLoggerProvider` in your application.

```
SdkLoggerProvider sdkLoggerProvider =
SdkLoggerProvider.builder()
.setResource(Resource.create(...))
.addLogProcessor(...)
.build();
GlobalLoggerProvider.set(sdkLoggerProvider);
```

In this example Logback log events will be sent to both the console appender and
the `OpenTelemetryAppender`, which will drop the logs until `GlobalLoggerProvider.set(..)` is
called. Once initialized, logs will be emitted to a `Logger` obtained from the `SdkLoggerProvider`.
the `OpenTelemetryAppender`.
Loading

0 comments on commit e312233

Please sign in to comment.