diff --git a/build-logic/conventions/src/main/kotlin/dd-trace-java.conventions.testing.slf4j-simple.gradle.kts b/build-logic/conventions/src/main/kotlin/dd-trace-java.conventions.testing.slf4j-simple.gradle.kts new file mode 100644 index 00000000000..efe41506de5 --- /dev/null +++ b/build-logic/conventions/src/main/kotlin/dd-trace-java.conventions.testing.slf4j-simple.gradle.kts @@ -0,0 +1,29 @@ +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.api.tasks.testing.Test +import org.gradle.kotlin.dsl.getByType + +val libs = extensions.getByType().named("libs") +val slf4jVersion = libs.findVersion("slf4j").get().requiredVersion +val slf4jSimple = "org.slf4j:slf4j-simple:$slf4jVersion" +val projectDependencies = dependencies + +configurations.configureEach { + if (name.contains("test", ignoreCase = true)) { + if (name.endsWith("runtimeClasspath", ignoreCase = true)) { + exclude(group = "ch.qos.logback") + } + + if (name.endsWith("runtimeOnly", ignoreCase = true)) { + projectDependencies.add(name, slf4jSimple) + } + } +} + +tasks.withType().configureEach { + jvmArgs( + "-Dorg.slf4j.simpleLogger.defaultLogLevel=debug", + "-Dorg.slf4j.simpleLogger.showThreadName=true", + "-Dorg.slf4j.simpleLogger.showDateTime=true", + "-Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss.SSS", + ) +} diff --git a/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-21.0/build.gradle b/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-21.0/build.gradle index 243a1fe6ef6..c155a3fdabd 100644 --- a/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-21.0/build.gradle +++ b/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-21.0/build.gradle @@ -1,11 +1,10 @@ plugins { id 'idea' id 'dd-trace-java.module.instrumentation' + // Use slf4j-simple as default; logback has a high chance of getting stuck in a deadlock on CI. + id 'dd-trace-java.conventions.testing.slf4j-simple' } -// Use slf4j-simple as default; logback has a high chance of getting stuck in a deadlock on CI. -apply from: "$rootDir/gradle/slf4j-simple.gradle" - testJvmConstraints { minJavaVersion = JavaVersion.VERSION_21 } diff --git a/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-25.0/build.gradle b/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-25.0/build.gradle index 8c91a4851f8..68f55deae88 100644 --- a/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-25.0/build.gradle +++ b/dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-25.0/build.gradle @@ -1,11 +1,10 @@ plugins { id 'idea' id 'dd-trace-java.module.instrumentation' + // Use slf4j-simple as default; logback has a high chance of getting stuck in a deadlock on CI. + id 'dd-trace-java.conventions.testing.slf4j-simple' } -// Use slf4j-simple as default; logback has a high chance of getting stuck in a deadlock on CI. -apply from: "$rootDir/gradle/slf4j-simple.gradle" - muzzle { pass { coreJdk('25') diff --git a/dd-java-agent/instrumentation/java/java-lang/java-lang-21.0/build.gradle b/dd-java-agent/instrumentation/java/java-lang/java-lang-21.0/build.gradle index 53a46ed3706..2ca7778c773 100644 --- a/dd-java-agent/instrumentation/java/java-lang/java-lang-21.0/build.gradle +++ b/dd-java-agent/instrumentation/java/java-lang/java-lang-21.0/build.gradle @@ -1,11 +1,10 @@ plugins { id 'idea' id 'dd-trace-java.module.instrumentation' + // Use slf4j-simple as default; logback has a high chance of getting stuck in a deadlock on CI. + id 'dd-trace-java.conventions.testing.slf4j-simple' } -// Use slf4j-simple as default; logback has a high chance of getting stuck in a deadlock on CI. -apply from: "$rootDir/gradle/slf4j-simple.gradle" - testJvmConstraints { minJavaVersion = JavaVersion.VERSION_21 } diff --git a/dd-java-agent/instrumentation/java/java-lang/java-lang-22.0/build.gradle b/dd-java-agent/instrumentation/java/java-lang/java-lang-22.0/build.gradle index 27633a5d8e1..0845fbd331b 100644 --- a/dd-java-agent/instrumentation/java/java-lang/java-lang-22.0/build.gradle +++ b/dd-java-agent/instrumentation/java/java-lang/java-lang-22.0/build.gradle @@ -1,6 +1,7 @@ plugins { id 'idea' id 'dd-trace-java.module.instrumentation' + id 'dd-trace-java.conventions.testing.slf4j-simple' } muzzle { @@ -9,8 +10,6 @@ muzzle { } } -apply from: "$rootDir/gradle/slf4j-simple.gradle" - tracerJava { addSourceSetFor(JavaVersion.VERSION_25) } diff --git a/gradle/slf4j-simple.gradle b/gradle/slf4j-simple.gradle deleted file mode 100644 index a83ef57a71a..00000000000 --- a/gradle/slf4j-simple.gradle +++ /dev/null @@ -1,27 +0,0 @@ -// Apply this script when `slf4j-simple` should be used instead of `logback`. - -configurations.configureEach { cfg -> - def name = cfg.name - - if (name.containsIgnoreCase("test")) { - // Exclude Logback from all test-like runtimeClasspath configurations. - if (name.endsWithIgnoreCase("runtimeClasspath")) { - cfg.exclude group: "ch.qos.logback" - } - - // Add slf4j-simple to all test-like runtimeOnly configurations. - if (name.endsWithIgnoreCase("runtimeOnly")) { - project.dependencies.add(name, "org.slf4j:slf4j-simple:${libs.versions.slf4j.get()}") - } - } -} - -// Configure `slf4j-simple` logger. -tasks.withType(Test).configureEach { - jvmArgs += [ - "-Dorg.slf4j.simpleLogger.defaultLogLevel=debug", - "-Dorg.slf4j.simpleLogger.showThreadName=true", - "-Dorg.slf4j.simpleLogger.showDateTime=true", - "-Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss.SSS" - ] -}