Skip to content

Commit 7efdbc0

Browse files
Support for custom keys in the logs (#13)
1 parent 1478899 commit 7efdbc0

File tree

13 files changed

+63
-20
lines changed

13 files changed

+63
-20
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
1515
import org.apache.logging.log4j.LogManager;
1616
import org.apache.logging.log4j.Logger;
17+
import software.aws.lambda.logging.PowerLogger;
1718
import software.aws.lambda.logging.PowerToolsLogging;
1819

1920
/**
@@ -29,6 +30,8 @@ public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEv
2930
headers.put("Content-Type", "application/json");
3031
headers.put("X-Custom-Header", "application/json");
3132

33+
PowerLogger.customKey("test", "willBeLogged");
34+
3235
APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent()
3336
.withHeaders(headers);
3437
try {

src/main/java/org/apache/logging/log4j/core/layout/LambdaJsonLayout.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
package org.apache.logging.log4j.core.layout;
22

3+
import java.io.IOException;
4+
import java.io.Writer;
5+
import java.nio.charset.Charset;
6+
import java.nio.charset.StandardCharsets;
7+
import java.time.ZoneId;
8+
import java.time.ZonedDateTime;
9+
import java.util.HashMap;
10+
import java.util.LinkedHashMap;
11+
import java.util.Map;
12+
313
import com.fasterxml.jackson.annotation.JsonAnyGetter;
414
import com.fasterxml.jackson.annotation.JsonGetter;
515
import com.fasterxml.jackson.annotation.JsonRootName;
@@ -18,22 +28,11 @@
1828
import org.apache.logging.log4j.core.util.KeyValuePair;
1929
import org.apache.logging.log4j.util.Strings;
2030

21-
import java.io.IOException;
22-
import java.io.Writer;
23-
import java.nio.charset.Charset;
24-
import java.nio.charset.StandardCharsets;
25-
import java.time.ZoneId;
26-
import java.time.ZonedDateTime;
27-
import java.util.HashMap;
28-
import java.util.LinkedHashMap;
29-
import java.util.Map;
30-
3131
import static java.time.Instant.ofEpochMilli;
3232
import static java.time.format.DateTimeFormatter.ISO_ZONED_DATE_TIME;
3333

3434
@Plugin(name = "LambdaJsonLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true)
3535
public class LambdaJsonLayout extends AbstractJacksonLayout {
36-
3736
private static final String DEFAULT_FOOTER = "]";
3837

3938
private static final String DEFAULT_HEADER = "[";
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package software.aws.lambda.logging;
2+
3+
import org.apache.logging.log4j.ThreadContext;
4+
5+
public class PowerLogger {
6+
7+
public static void customKey(String key, String value) {
8+
ThreadContext.put(key, value);
9+
}
10+
}

src/main/java/software/aws/lambda/logging/DefaultLambdaFields.java renamed to src/main/java/software/aws/lambda/logging/internal/DefaultLambdaFields.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import com.amazonaws.services.lambda.runtime.Context;
44

src/main/java/software/aws/lambda/logging/LambdaAspect.java renamed to src/main/java/software/aws/lambda/logging/internal/LambdaAspect.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import java.io.ByteArrayInputStream;
44
import java.io.ByteArrayOutputStream;
@@ -21,6 +21,7 @@
2121
import org.aspectj.lang.annotation.Around;
2222
import org.aspectj.lang.annotation.Aspect;
2323
import org.aspectj.lang.annotation.Pointcut;
24+
import software.aws.lambda.logging.PowerToolsLogging;
2425

2526
import static java.util.Optional.empty;
2627
import static java.util.Optional.of;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package software.aws.lambda.logging;
2+
3+
import org.apache.logging.log4j.ThreadContext;
4+
import org.junit.jupiter.api.BeforeEach;
5+
import org.junit.jupiter.api.Test;
6+
import software.aws.lambda.logging.PowerLogger;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
11+
class PowerLoggerTest {
12+
13+
@BeforeEach
14+
void setUp() {
15+
ThreadContext.clearAll();
16+
}
17+
18+
@Test
19+
void shouldSetCustomKeyOnThreadContext() {
20+
PowerLogger.customKey("test", "value");
21+
22+
assertThat(ThreadContext.getImmutableContext())
23+
.hasSize(1)
24+
.containsEntry("test", "value");
25+
}
26+
}

src/test/java/software/aws/lambda/logging/LambdaAspectTest.java renamed to src/test/java/software/aws/lambda/logging/internal/LambdaAspectTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import java.io.ByteArrayInputStream;
44
import java.io.ByteArrayOutputStream;

src/test/java/software/aws/lambda/logging/PowerLogToolDisabled.java renamed to src/test/java/software/aws/lambda/logging/internal/PowerLogToolDisabled.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import com.amazonaws.services.lambda.runtime.Context;
44
import com.amazonaws.services.lambda.runtime.RequestHandler;

src/test/java/software/aws/lambda/logging/PowerLogToolDisabledForStream.java renamed to src/test/java/software/aws/lambda/logging/internal/PowerLogToolDisabledForStream.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import java.io.InputStream;
44
import java.io.OutputStream;

src/test/java/software/aws/lambda/logging/PowerLogToolEnabled.java renamed to src/test/java/software/aws/lambda/logging/internal/PowerLogToolEnabled.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import com.amazonaws.services.lambda.runtime.Context;
44
import com.amazonaws.services.lambda.runtime.RequestHandler;
5+
import software.aws.lambda.logging.PowerToolsLogging;
56

67
public class PowerLogToolEnabled implements RequestHandler<Object, Object> {
78

src/test/java/software/aws/lambda/logging/PowerLogToolEnabledForStream.java renamed to src/test/java/software/aws/lambda/logging/internal/PowerLogToolEnabledForStream.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import java.io.InputStream;
44
import java.io.OutputStream;
55

66
import com.amazonaws.services.lambda.runtime.Context;
77
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
8+
import software.aws.lambda.logging.PowerToolsLogging;
89

910
public class PowerLogToolEnabledForStream implements RequestStreamHandler {
1011

src/test/java/software/aws/lambda/logging/PowerToolLogEventEnabled.java renamed to src/test/java/software/aws/lambda/logging/internal/PowerToolLogEventEnabled.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import com.amazonaws.services.lambda.runtime.Context;
44
import com.amazonaws.services.lambda.runtime.RequestHandler;
5+
import software.aws.lambda.logging.PowerToolsLogging;
56

67
public class PowerToolLogEventEnabled implements RequestHandler<Object, Object> {
78

src/test/java/software/aws/lambda/logging/PowerToolLogEventEnabledForStream.java renamed to src/test/java/software/aws/lambda/logging/internal/PowerToolLogEventEnabledForStream.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package software.aws.lambda.logging;
1+
package software.aws.lambda.logging.internal;
22

33
import java.io.IOException;
44
import java.io.InputStream;
@@ -8,6 +8,7 @@
88
import com.amazonaws.services.lambda.runtime.Context;
99
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
1010
import com.fasterxml.jackson.databind.ObjectMapper;
11+
import software.aws.lambda.logging.PowerToolsLogging;
1112

1213
public class PowerToolLogEventEnabledForStream implements RequestStreamHandler {
1314

0 commit comments

Comments
 (0)