Skip to content

Commit e002f7a

Browse files
authored
Ktor: support setting custom spanNameExtractor (#12842) (#12850)
1 parent 712e0a7 commit e002f7a

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracingBuilder.kt

+6
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import io.opentelemetry.api.common.AttributesBuilder
1313
import io.opentelemetry.context.Context
1414
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder
1515
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor
16+
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor
1617
import io.opentelemetry.instrumentation.ktor.internal.KtorBuilderUtil
18+
import java.util.function.Function
1719

1820
abstract class AbstractKtorClientTracingBuilder(
1921
private val instrumentationName: String
@@ -169,4 +171,8 @@ abstract class AbstractKtorClientTracingBuilder(
169171
fun emitExperimentalHttpClientMetrics() {
170172
clientBuilder.setEmitExperimentalHttpClientMetrics(true)
171173
}
174+
175+
fun spanNameExtractor(spanNameExtractorTransformer: Function<SpanNameExtractor<in HttpRequestData>, out SpanNameExtractor<in HttpRequestData>>) {
176+
clientBuilder.setSpanNameExtractor(spanNameExtractorTransformer)
177+
}
172178
}

instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/AbstractKtorServerTracingBuilder.kt

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package io.opentelemetry.instrumentation.ktor.server
77

88
import io.ktor.http.*
9-
import io.ktor.server.application.*
109
import io.ktor.server.request.*
1110
import io.ktor.server.response.*
1211
import io.opentelemetry.api.OpenTelemetry
@@ -16,9 +15,11 @@ import io.opentelemetry.context.Context
1615
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder
1716
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor
1817
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor
18+
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor
1919
import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusBuilder
2020
import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor
2121
import io.opentelemetry.instrumentation.ktor.internal.KtorBuilderUtil
22+
import java.util.function.Function
2223

2324
abstract class AbstractKtorServerTracingBuilder(private val instrumentationName: String) {
2425
companion object {
@@ -86,6 +87,10 @@ abstract class AbstractKtorServerTracingBuilder(private val instrumentationName:
8687
}
8788
}
8889

90+
fun spanNameExtractor(spanNameExtractorTransformer: Function<SpanNameExtractor<in ApplicationRequest>, out SpanNameExtractor<in ApplicationRequest>>) {
91+
serverBuilder.setSpanNameExtractor(spanNameExtractorTransformer)
92+
}
93+
8994
@Deprecated("Please use method `attributeExtractor`")
9095
fun addAttributeExtractor(extractor: AttributesExtractor<in ApplicationRequest, in ApplicationResponse>) {
9196
attributeExtractor {

0 commit comments

Comments
 (0)