Skip to content

Commit aebcc04

Browse files
author
Pankaj Agrawal
committed
Example usage in the demo app
1 parent 97e1498 commit aebcc04

File tree

11 files changed

+56
-25
lines changed

11 files changed

+56
-25
lines changed

example/HelloWorldFunction/pom.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
<artifactId>powertools-logging</artifactId>
2424
<version>0.2.0-beta</version>
2525
</dependency>
26+
<dependency>
27+
<groupId>software.amazon.lambda</groupId>
28+
<artifactId>powertools-metrics</artifactId>
29+
<version>0.2.0-beta</version>
30+
</dependency>
2631
<dependency>
2732
<groupId>com.amazonaws</groupId>
2833
<artifactId>aws-lambda-java-core</artifactId>
@@ -76,6 +81,10 @@
7681
<groupId>software.amazon.lambda</groupId>
7782
<artifactId>powertools-logging</artifactId>
7883
</aspectLibrary>
84+
<aspectLibrary>
85+
<groupId>software.amazon.lambda</groupId>
86+
<artifactId>powertools-metrics</artifactId>
87+
</aspectLibrary>
7988
</aspectLibraries>
8089
</configuration>
8190
<executions>

example/HelloWorldFunction/src/main/java/helloworld/App.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
package helloworld;
22

3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.net.URL;
7+
import java.util.HashMap;
8+
import java.util.Map;
9+
import java.util.stream.Collectors;
10+
311
import com.amazonaws.services.lambda.runtime.Context;
412
import com.amazonaws.services.lambda.runtime.RequestHandler;
513
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
@@ -8,19 +16,16 @@
816
import com.amazonaws.xray.entities.Entity;
917
import org.apache.logging.log4j.LogManager;
1018
import org.apache.logging.log4j.Logger;
19+
import software.amazon.cloudwatchlogs.emf.model.DimensionSet;
20+
import software.amazon.cloudwatchlogs.emf.model.Unit;
1121
import software.amazon.lambda.powertools.logging.PowertoolsLogger;
1222
import software.amazon.lambda.powertools.logging.PowertoolsLogging;
23+
import software.amazon.lambda.powertools.metrics.PowertoolsMetrics;
1324
import software.amazon.lambda.powertools.tracing.PowerTracer;
1425
import software.amazon.lambda.powertools.tracing.PowertoolsTracing;
1526

16-
import java.io.BufferedReader;
17-
import java.io.IOException;
18-
import java.io.InputStreamReader;
19-
import java.net.URL;
20-
import java.util.HashMap;
21-
import java.util.Map;
22-
import java.util.stream.Collectors;
23-
27+
import static software.amazon.lambda.powertools.metrics.PowertoolsMetricsLogger.metricsLogger;
28+
import static software.amazon.lambda.powertools.metrics.PowertoolsMetricsLogger.withSingleMetric;
2429
import static software.amazon.lambda.powertools.tracing.PowerTracer.putMetadata;
2530
import static software.amazon.lambda.powertools.tracing.PowerTracer.withEntitySubsegment;
2631

@@ -33,12 +38,20 @@ public class App implements RequestHandler<APIGatewayProxyRequestEvent, APIGatew
3338

3439
@PowertoolsLogging(logEvent = true, samplingRate = 0.7)
3540
@PowertoolsTracing(captureError = false, captureResponse = false)
41+
@PowertoolsMetrics(namespace = "EMF", captureColdStart = true)
3642
public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
3743
Map<String, String> headers = new HashMap<>();
3844

3945
headers.put("Content-Type", "application/json");
4046
headers.put("X-Custom-Header", "application/json");
4147

48+
metricsLogger().putMetric("CustomMetric1", 1, Unit.COUNT);
49+
50+
withSingleMetric("CustomMetrics2", 1, Unit.COUNT, "Another", (logger) -> {
51+
logger.setDimensions(DimensionSet.of("AnotherService", "CustomService"));
52+
logger.setDimensions(DimensionSet.of("AnotherService1", "CustomService1"));
53+
});
54+
4255
PowertoolsLogger.appendKey("test", "willBeLogged");
4356

4457
APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent()

example/HelloWorldFunction/src/main/java/helloworld/AppStream.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
package helloworld;
22

3-
import com.amazonaws.services.lambda.runtime.Context;
4-
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
5-
import com.fasterxml.jackson.databind.ObjectMapper;
6-
import software.amazon.lambda.powertools.logging.PowertoolsLogging;
7-
83
import java.io.IOException;
94
import java.io.InputStream;
105
import java.io.OutputStream;
116
import java.util.Map;
127

8+
import com.amazonaws.services.lambda.runtime.Context;
9+
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
10+
import com.fasterxml.jackson.databind.ObjectMapper;
11+
import software.amazon.lambda.powertools.logging.PowertoolsLogging;
12+
import software.amazon.lambda.powertools.metrics.PowertoolsMetrics;
13+
1314
public class AppStream implements RequestStreamHandler {
1415
private static final ObjectMapper mapper = new ObjectMapper();
1516

1617
@Override
1718
@PowertoolsLogging(logEvent = true)
19+
@PowertoolsMetrics(namespace = "EMF", captureColdStart = true)
1820
public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
1921
Map map = mapper.readValue(input, Map.class);
2022

powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ public static String serviceName() {
7171
return SERVICE_NAME;
7272
}
7373

74-
public static Boolean isColdStart() {
75-
return IS_COLD_START;
74+
public static boolean isColdStart() {
75+
return IS_COLD_START == null;
7676
}
7777

7878
public static void coldStartDone() {

powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspect.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public Object around(ProceedingJoinPoint pjp,
7979
extractContext(pjp)
8080
.ifPresent(context -> {
8181
appendKeys(DefaultLambdaFields.values(context));
82-
appendKey("coldStart", null == isColdStart() ? "true" : "false");
82+
appendKey("coldStart", isColdStart() ? "true" : "false");
8383
appendKey("service", serviceName());
8484
});
8585

powertools-metrics/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@
8080
<artifactId>mockito-core</artifactId>
8181
<scope>test</scope>
8282
</dependency>
83+
<dependency>
84+
<groupId>org.mockito</groupId>
85+
<artifactId>mockito-inline</artifactId>
86+
<scope>test</scope>
87+
</dependency>
8388
<dependency>
8489
<groupId>org.aspectj</groupId>
8590
<artifactId>aspectjweaver</artifactId>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
public final class PowertoolsMetricsLogger {
99
private static MetricsLogger metricsLogger = new MetricsLogger();
1010

11-
public static MetricsLogger logger() {
11+
public static MetricsLogger metricsLogger() {
1212
return metricsLogger;
1313
}
1414

powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/internal/LambdaMetricsAspect.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.placedOnRequestHandler;
2020
import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.placedOnStreamHandler;
2121
import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.serviceName;
22-
import static software.amazon.lambda.powertools.metrics.PowertoolsMetricsLogger.logger;
22+
import static software.amazon.lambda.powertools.metrics.PowertoolsMetricsLogger.metricsLogger;
2323

2424
@Aspect
2525
public class LambdaMetricsAspect {
@@ -39,7 +39,7 @@ public Object around(ProceedingJoinPoint pjp,
3939
&& (placedOnRequestHandler(pjp)
4040
|| placedOnStreamHandler(pjp))) {
4141

42-
MetricsLogger logger = logger();
42+
MetricsLogger logger = metricsLogger();
4343

4444
logger.setNamespace(namespace(powertoolsMetrics))
4545
.setDimensions(DimensionSet.of("service", service(powertoolsMetrics)));
@@ -57,7 +57,7 @@ && isColdStart()) {
5757
coldStartLogger = new MetricsLogger();
5858

5959
coldStartLogger.putDimensions(DimensionSet.of("function_name", context.getFunctionName()))
60-
.putDimensions(DimensionSet.of("service", service(powertoolsMetrics)))
60+
.setDimensions(DimensionSet.of("service", service(powertoolsMetrics)))
6161
.setNamespace(namespace(powertoolsMetrics))
6262
.putMetric("ColdStart", 1, Unit.COUNT);
6363
}

powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
import software.amazon.cloudwatchlogs.emf.logger.MetricsLogger;
66
import software.amazon.cloudwatchlogs.emf.model.Unit;
77
import software.amazon.lambda.powertools.metrics.PowertoolsMetrics;
8-
import software.amazon.lambda.powertools.metrics.PowertoolsMetricsLogger;
8+
9+
import static software.amazon.lambda.powertools.metrics.PowertoolsMetricsLogger.metricsLogger;
910

1011
public class PowertoolsMetricsEnabledHandler implements RequestHandler<Object, Object> {
1112

1213
@Override
1314
@PowertoolsMetrics(namespace = "ExampleApplication", service = "booking")
1415
public Object handleRequest(Object input, Context context) {
15-
MetricsLogger metricsLogger = PowertoolsMetricsLogger.logger();
16+
MetricsLogger metricsLogger = metricsLogger();
1617
metricsLogger.putMetric("Metric1", 1, Unit.BYTES);
1718

1819
return null;

powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/LambdaMetricsAspectTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static org.mockito.Mockito.when;
1818
import static org.mockito.MockitoAnnotations.openMocks;
1919
import static software.amazon.cloudwatchlogs.emf.model.Unit.BYTES;
20+
import static software.amazon.lambda.powertools.metrics.PowertoolsMetricsLogger.metricsLogger;
2021

2122
public class LambdaMetricsAspectTest {
2223

@@ -40,7 +41,7 @@ void setUp() throws IllegalAccessException {
4041
public void testHandler() {
4142
requestHandler.handleRequest("input", context);
4243

43-
MetricsLogger logger = PowertoolsMetricsLogger.logger();
44+
MetricsLogger logger = metricsLogger();
4445

4546
verify(logger).setDimensions(any(DimensionSet.class));
4647
verify(logger).setNamespace("ExampleApplication");

powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
@Aspect
3232
public final class LambdaTracingAspect {
3333

34-
@SuppressWarnings({"EmptyMethod", "unused"})
34+
@SuppressWarnings({"EmptyMethod"})
3535
@Pointcut("@annotation(powerToolsTracing)")
3636
public void callAt(PowertoolsTracing powerToolsTracing) {
3737
}
@@ -45,7 +45,7 @@ public Object around(ProceedingJoinPoint pjp,
4545
segment.setNamespace(namespace(powerToolsTracing));
4646

4747
if (placedOnHandlerMethod(pjp)) {
48-
segment.putAnnotation("ColdStart", isColdStart() == null);
48+
segment.putAnnotation("ColdStart", isColdStart());
4949
}
5050

5151
try {

0 commit comments

Comments
 (0)