Skip to content

Commit

Permalink
Add JBoss java.util.logging support (open-telemetry#5498)
Browse files Browse the repository at this point in the history
  • Loading branch information
trask authored Mar 4, 2022
1 parent b0e4be0 commit 8b26cef
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 2 deletions.
4 changes: 4 additions & 0 deletions instrumentation/java-util-logging/javaagent/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ dependencies {

compileOnly(project(":instrumentation-appender-api-internal"))

// the JBoss instrumentation in this artifact is needed
// for jboss-logmanager versions 1.1.0.GA through latest 2.x
testLibrary("org.jboss.logmanager:jboss-logmanager:1.1.0.GA")

testImplementation("org.awaitility:awaitility")
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public static void capture(Logger logger, LogRecord logRecord) {
return;
}

String instrumentationName = logRecord.getLoggerName();
String instrumentationName = logger.getName();
if (instrumentationName == null || instrumentationName.isEmpty()) {
instrumentationName = "ROOT";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ public void transform(TypeTransformer transformer) {
.and(takesArguments(1))
.and(takesArgument(0, named("java.util.logging.LogRecord"))),
JavaUtilLoggingInstrumentation.class.getName() + "$LogAdvice");
transformer.applyAdviceToMethod(
isMethod()
.and(isPublic())
.and(named("logRaw"))
.and(takesArguments(1))
.and(takesArgument(0, named("org.jboss.logmanager.ExtLogRecord"))),
JavaUtilLoggingInstrumentation.class.getName() + "$LogAdvice");
}

@SuppressWarnings("unused")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

import org.jboss.logmanager.LogContext

class JBossJavaUtilLoggingTest extends JavaUtilLoggingTest {

@Override
Object createLogger(String name) {
LogContext.create().getLogger(name)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
import io.opentelemetry.sdk.logs.data.Severity
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
import spock.lang.Shared
import spock.lang.Unroll

import java.util.logging.Level
Expand All @@ -16,7 +17,12 @@ import static org.awaitility.Awaitility.await

class JavaUtilLoggingTest extends AgentInstrumentationSpecification {

private static final Logger logger = Logger.getLogger("abc")
@Shared
private final Object logger = createLogger("abc")

Object createLogger(String name) {
Logger.getLogger(name)
}

@Unroll
def "test method=#testMethod with testArgs=#testArgs and parent=#parent"() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
// after java.util.logging.Logger is shaded to the "PatchLogger"
public class Logger {

public String getName() {
throw new UnsupportedOperationException();
}

public boolean isLoggable(@SuppressWarnings("unused") Level level) {
throw new UnsupportedOperationException();
}
Expand Down

0 comments on commit 8b26cef

Please sign in to comment.