Skip to content

Commit 63e1d16

Browse files
authored
chore(metrics): deprecate withMetricLogger in favor of withMetricsLogger (#1060)
chore(metrics): deprecated MetricsUtils.withMetricLogger in favor of MetricsUtils.withMetricsLogger
1 parent ca1da46 commit 63e1d16

File tree

2 files changed

+37
-11
lines changed

2 files changed

+37
-11
lines changed

powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/MetricsUtils.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public static void withSingleMetric(final String name,
8181
final double value,
8282
final Unit unit,
8383
final Consumer<MetricsLogger> logger) {
84-
withMetricLogger(metricsLogger -> {
84+
withMetricsLogger(metricsLogger -> {
8585
metricsLogger.putMetric(name, value, unit);
8686
logger.accept(metricsLogger);
8787
});
@@ -103,7 +103,7 @@ public static void withSingleMetric(final String name,
103103
final Unit unit,
104104
final String namespace,
105105
final Consumer<MetricsLogger> logger) {
106-
withMetricLogger(metricsLogger -> {
106+
withMetricsLogger(metricsLogger -> {
107107
metricsLogger.setNamespace(namespace);
108108
metricsLogger.putMetric(name, value, unit);
109109
logger.accept(metricsLogger);
@@ -118,7 +118,7 @@ public static void withSingleMetric(final String name,
118118
*
119119
* @param logger the MetricsLogger
120120
*/
121-
public static void withMetricLogger(final Consumer<MetricsLogger> logger) {
121+
public static void withMetricsLogger(final Consumer<MetricsLogger> logger) {
122122
MetricsLogger metricsLogger = logger();
123123

124124
try {
@@ -130,6 +130,21 @@ public static void withMetricLogger(final Consumer<MetricsLogger> logger) {
130130
}
131131
}
132132

133+
/**
134+
* Provide and immediately flush a {@link MetricsLogger}. It uses the default namespace
135+
* specified either on {@link Metrics} annotation or via POWERTOOLS_METRICS_NAMESPACE env var.
136+
* It by default captures function_request_id as property if used together with {@link Metrics} annotation. It will also
137+
* capture xray_trace_id as property if tracing is enabled.
138+
*
139+
* @param logger the MetricsLogger
140+
*
141+
* @deprecated use {@link MetricsUtils#withMetricsLogger} instead
142+
*/
143+
@Deprecated
144+
public static void withMetricLogger(final Consumer<MetricsLogger> logger) {
145+
withMetricsLogger(logger);
146+
}
147+
133148
public static DimensionSet[] getDefaultDimensions() {
134149
return Arrays.copyOf(defaultDimensions, defaultDimensions.length);
135150
}

powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/MetricsLoggerTest.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.ByteArrayOutputStream;
44
import java.io.PrintStream;
55
import java.util.Map;
6+
import java.util.function.Consumer;
67

78
import com.fasterxml.jackson.core.JsonProcessingException;
89
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -12,6 +13,7 @@
1213
import org.junit.jupiter.api.Test;
1314
import org.mockito.MockedStatic;
1415
import software.amazon.cloudwatchlogs.emf.config.SystemWrapper;
16+
import software.amazon.cloudwatchlogs.emf.logger.MetricsLogger;
1517
import software.amazon.cloudwatchlogs.emf.model.DimensionSet;
1618
import software.amazon.cloudwatchlogs.emf.model.Unit;
1719

@@ -124,13 +126,29 @@ void singleMetricsCaptureUtilityWithDefaultNameSpace() {
124126

125127
@Test
126128
void metricsLoggerCaptureUtilityWithDefaultNameSpace() {
129+
testLogger(MetricsUtils::withMetricsLogger);
130+
}
131+
132+
@Test
133+
void deprecatedMetricLoggerCaptureUtilityWithDefaultNameSpace() {
134+
testLogger(MetricsUtils::withMetricLogger);
135+
}
136+
137+
@Test
138+
void shouldThrowExceptionWhenDefaultDimensionIsNull() {
139+
assertThatNullPointerException()
140+
.isThrownBy(() -> MetricsUtils.defaultDimensionSet(null))
141+
.withMessage("Null dimension set not allowed");
142+
}
143+
144+
private void testLogger(Consumer<Consumer<MetricsLogger>> methodToTest) {
127145
try (MockedStatic<SystemWrapper> mocked = mockStatic(SystemWrapper.class);
128146
MockedStatic<software.amazon.lambda.powertools.core.internal.SystemWrapper> internalWrapper = mockStatic(software.amazon.lambda.powertools.core.internal.SystemWrapper.class)) {
129147
mocked.when(() -> SystemWrapper.getenv("AWS_EMF_ENVIRONMENT")).thenReturn("Lambda");
130148
mocked.when(() -> SystemWrapper.getenv("POWERTOOLS_METRICS_NAMESPACE")).thenReturn("GlobalName");
131149
internalWrapper.when(() -> getenv("_X_AMZN_TRACE_ID")).thenReturn("Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1\"");
132150

133-
MetricsUtils.withMetricLogger(metricsLogger -> {
151+
methodToTest.accept(metricsLogger -> {
134152
metricsLogger.setDimensions(DimensionSet.of("Dimension1", "Value1"));
135153
metricsLogger.putMetric("Metric1", 1, Unit.COUNT);
136154
});
@@ -154,13 +172,6 @@ void metricsLoggerCaptureUtilityWithDefaultNameSpace() {
154172
}
155173
}
156174

157-
@Test
158-
void shouldThrowExceptionWhenDefaultDimensionIsNull() {
159-
assertThatNullPointerException()
160-
.isThrownBy(() -> MetricsUtils.defaultDimensionSet(null))
161-
.withMessage("Null dimension set not allowed");
162-
}
163-
164175
private Map<String, Object> readAsJson(String s) {
165176
try {
166177
return mapper.readValue(s, Map.class);

0 commit comments

Comments
 (0)