From 1e15cc1ab058e68caed650d3ced1920a62aaf7fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jerna=C5=9B?= Date: Thu, 7 Aug 2025 10:27:34 +0200 Subject: [PATCH 1/2] Add Kotlin samples for tracing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See gh-46699 Signed-off-by: Łukasz Jernaś --- .../baggage/CreatingBaggage.kt | 30 +++++++++++++ .../creatingspans/CustomObservation.kt | 33 +++++++++++++++ .../gettingstarted/MyApplication.kt | 42 +++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/baggage/CreatingBaggage.kt create mode 100644 spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/creatingspans/CustomObservation.kt create mode 100644 spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/gettingstarted/MyApplication.kt diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/baggage/CreatingBaggage.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/baggage/CreatingBaggage.kt new file mode 100644 index 00000000000..7985fcf0871 --- /dev/null +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/baggage/CreatingBaggage.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2012-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.docs.actuator.micrometertracing.baggage + +import io.micrometer.tracing.Tracer +import org.springframework.stereotype.Component + +@Component +class CreatingBaggage(private val tracer: Tracer) { + + fun doSomething() { + tracer.createBaggageInScope("baggage1", "value1").use { + // Business logic + } + } +} \ No newline at end of file diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/creatingspans/CustomObservation.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/creatingspans/CustomObservation.kt new file mode 100644 index 00000000000..da39d06a61a --- /dev/null +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/creatingspans/CustomObservation.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2012-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.docs.actuator.micrometertracing.creatingspans + +import io.micrometer.observation.Observation +import io.micrometer.observation.ObservationRegistry +import org.springframework.stereotype.Component + +@Component +class CustomObservation(private val observationRegistry: ObservationRegistry) { + + fun someOperation() { + Observation.createNotStarted("some-operation", observationRegistry) + .lowCardinalityKeyValue("some-tag", "some-value") + .observe { + // Business logic ... + } + } +} \ No newline at end of file diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/gettingstarted/MyApplication.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/gettingstarted/MyApplication.kt new file mode 100644 index 00000000000..5fdbca0baed --- /dev/null +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/gettingstarted/MyApplication.kt @@ -0,0 +1,42 @@ +/* + * Copyright 2012-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.docs.actuator.micrometertracing.gettingstarted + +import org.apache.commons.logging.Log +import org.apache.commons.logging.LogFactory +import org.springframework.boot.autoconfigure.SpringBootApplication +import org.springframework.boot.runApplication +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@RestController +@SpringBootApplication +class MyApplication { + + private val logger: Log = LogFactory.getLog(MyApplication::class.java) + + + @RequestMapping("/") + fun hello(): String { + logger.info("home() has been called") + return "Hello, World!" + } +} + +fun main(args: Array) { + runApplication(*args) +} \ No newline at end of file From ac73852e87e1a04b0139abdfe40c28d01a2dba4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Mon, 11 Aug 2025 09:12:34 +0200 Subject: [PATCH 2/2] Polish "Add Kotlin samples for tracing" See gh-46699 --- .../actuator/micrometertracing/baggage/CreatingBaggage.kt | 5 +++-- .../micrometertracing/creatingspans/CustomObservation.kt | 5 +++-- .../micrometertracing/gettingstarted/MyApplication.kt | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/baggage/CreatingBaggage.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/baggage/CreatingBaggage.kt index 7985fcf0871..6e6870e73b9 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/baggage/CreatingBaggage.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/baggage/CreatingBaggage.kt @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-present the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,4 +27,5 @@ class CreatingBaggage(private val tracer: Tracer) { // Business logic } } -} \ No newline at end of file + +} diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/creatingspans/CustomObservation.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/creatingspans/CustomObservation.kt index da39d06a61a..e21faba84f1 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/creatingspans/CustomObservation.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/creatingspans/CustomObservation.kt @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-present the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,4 +30,5 @@ class CustomObservation(private val observationRegistry: ObservationRegistry) { // Business logic ... } } -} \ No newline at end of file + +} diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/gettingstarted/MyApplication.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/gettingstarted/MyApplication.kt index 5fdbca0baed..2ffa0ebf05b 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/gettingstarted/MyApplication.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/actuator/micrometertracing/gettingstarted/MyApplication.kt @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-present the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,14 +29,14 @@ class MyApplication { private val logger: Log = LogFactory.getLog(MyApplication::class.java) - @RequestMapping("/") fun hello(): String { logger.info("home() has been called") return "Hello, World!" } + } fun main(args: Array) { runApplication(*args) -} \ No newline at end of file +}