From 5543b258d73de1dd2a14dc391683eb5dc33da1e0 Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Tue, 28 Jan 2025 16:34:55 -0800 Subject: [PATCH 1/2] Make Timer and LongTaskTimer output similar in LoggingMeterRegistry In case of the LoggingMeterRegistry, the output of a LongTaskTimer looks like this: "my.ltt{} active=30 duration=30m" while the output of a Timer is something like this: "my.timer{} delta_count=30 throughput=0.5/s mean=1s max=1s" We can add the missing fields to the LongTaskTimer output: "my.ltt{} active=30 duration=30m throughput=0.5/s mean=1m max=1m" --- .../core/instrument/logging/LoggingMeterRegistry.java | 5 ++++- .../core/instrument/logging/LoggingMeterRegistryTest.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java b/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java index 750efdb43a..677a67c794 100644 --- a/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java +++ b/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java @@ -150,8 +150,11 @@ protected void publish() { int activeTasks = longTaskTimer.activeTasks(); if (!config.logInactive() && activeTasks == 0) return; + HistogramSnapshot snapshot = longTaskTimer.takeSnapshot(); loggingSink.accept(print.id() + " active=" + wholeOrDecimal(activeTasks) + " duration=" - + print.time(longTaskTimer.duration(getBaseTimeUnit()))); + + print.time(longTaskTimer.duration(getBaseTimeUnit())) + " throughput=" + + print.unitlessRate(activeTasks) + " mean=" + print.time(snapshot.mean(getBaseTimeUnit())) + + " max=" + print.time(snapshot.max(getBaseTimeUnit()))); }, timeGauge -> { double value = timeGauge.value(getBaseTimeUnit()); if (!config.logInactive() && value == 0) diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java index 283cd5043f..6b36af997b 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java @@ -231,7 +231,8 @@ void publishShouldPrintActiveCountAndDurationWhenMeterIsLongTaskTimer() { IntStream.rangeClosed(1, 30).forEach(t -> timer.start()); clock.add(config.step()); recordingRegistry.publish(); - assertThat(recordingRegistry.getLogs()).containsExactly("my.ltt{} active=30 duration=30m"); + assertThat(recordingRegistry.getLogs()) + .containsExactly("my.ltt{} active=30 duration=30m throughput=0.5/s mean=1m max=1m"); } @Test From 7f9a738c56c780848c38e4fad991e7b8c7b5c3ac Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Wed, 29 Jan 2025 11:29:48 -0800 Subject: [PATCH 2/2] Remove throughput from LongTaskTimer output --- .../core/instrument/logging/LoggingMeterRegistry.java | 6 +++--- .../core/instrument/logging/LoggingMeterRegistryTest.java | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java b/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java index 677a67c794..75f6111e82 100644 --- a/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java +++ b/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java @@ -152,9 +152,9 @@ protected void publish() { return; HistogramSnapshot snapshot = longTaskTimer.takeSnapshot(); loggingSink.accept(print.id() + " active=" + wholeOrDecimal(activeTasks) + " duration=" - + print.time(longTaskTimer.duration(getBaseTimeUnit())) + " throughput=" - + print.unitlessRate(activeTasks) + " mean=" + print.time(snapshot.mean(getBaseTimeUnit())) - + " max=" + print.time(snapshot.max(getBaseTimeUnit()))); + + print.time(longTaskTimer.duration(getBaseTimeUnit())) + " mean=" + + print.time(snapshot.mean(getBaseTimeUnit())) + " max=" + + print.time(snapshot.max(getBaseTimeUnit()))); }, timeGauge -> { double value = timeGauge.value(getBaseTimeUnit()); if (!config.logInactive() && value == 0) diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java index 6b36af997b..cd90cbaf30 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java @@ -231,8 +231,7 @@ void publishShouldPrintActiveCountAndDurationWhenMeterIsLongTaskTimer() { IntStream.rangeClosed(1, 30).forEach(t -> timer.start()); clock.add(config.step()); recordingRegistry.publish(); - assertThat(recordingRegistry.getLogs()) - .containsExactly("my.ltt{} active=30 duration=30m throughput=0.5/s mean=1m max=1m"); + assertThat(recordingRegistry.getLogs()).containsExactly("my.ltt{} active=30 duration=30m mean=1m max=1m"); } @Test