Skip to content
This repository was archived by the owner on Jun 4, 2024. It is now read-only.

Commit 8652fae

Browse files
committed
Merge branch 'add-marker-list-to-json' into 'main'
Resolve "Add Marker list to JSON" Closes #27 See merge request bot-by/slf4j-aws-lambda!20
2 parents 9401201 + 7da63bf commit 8652fae

File tree

11 files changed

+118
-38
lines changed

11 files changed

+118
-38
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
/public/
12
target
23
.flattened-pom.xml
34

45
*~
56
*.iml
6-
/public/

.gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ build:
2929
test:
3030
stage: test
3131
script:
32-
- mvn $MAVEN_CLI_OPTS -pl core,logger,json-logger verify
32+
- mvn $MAVEN_CLI_OPTS verify
3333
artifacts:
3434
reports:
3535
junit:

.idea/compiler.xml

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
-50.6 KB
Loading

example-lambda-json/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1818
xmlns="http://maven.apache.org/POM/4.0.0"
1919
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20-
<artifactId>slf4j-aws-lambda-json-example</artifactId>
20+
<artifactId>example-lambda-json</artifactId>
2121
<build>
2222
<plugins>
2323
<plugin>

example-lambda-json/readme.md

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,47 +9,58 @@ The expected log lines
99

1010
```json
1111
{
12-
"level": "INFO",
13-
"logname": "uk.bot_by.slf4j_demo.BotHandler",
14-
"message": "info message",
15-
"aws-request-id": "7b9af47e-d861-44b4-bde7-fa2e84ffb7cf"
12+
"level":"INFO",
13+
"logname":"uk.bot_by.slf4j_demo.BotHandler",
14+
"message":"info message",
15+
"aws-request-id":"2fd42680-a990-4b24-ae28-4213c86eb512"
1616
}
1717
{
18-
"level": "WARN",
19-
"logname": "uk.bot_by.slf4j_demo.BotHandler",
20-
"message": "warning message",
21-
"aws-request-id": "7b9af47e-d861-44b4-bde7-fa2e84ffb7cf"
18+
"level":"WARN",
19+
"logname":"uk.bot_by.slf4j_demo.BotHandler",
20+
"message":"warning message",
21+
"aws-request-id":"2fd42680-a990-4b24-ae28-4213c86eb512"
2222
}
2323
{
24-
"level": "ERROR",
25-
"logname": "uk.bot_by.slf4j_demo.BotHandler",
26-
"message": "error message",
27-
"aws-request-id": "7b9af47e-d861-44b4-bde7-fa2e84ffb7cf"
24+
"level":"ERROR",
25+
"logname":"uk.bot_by.slf4j_demo.BotHandler",
26+
"message":"error message",
27+
"aws-request-id":"2fd42680-a990-4b24-ae28-4213c86eb512"
2828
}
2929
{
30-
"level": "TRACE",
31-
"logname": "uk.bot_by.slf4j_demo.BotHandler",
32-
"message": "CRLF\ninjection",
33-
"aws-request-id": "7b9af47e-d861-44b4-bde7-fa2e84ffb7cf"
30+
"level":"TRACE",
31+
"logname":"uk.bot_by.slf4j_demo.BotHandler",
32+
"markers":[
33+
"important"
34+
],
35+
"message":"CRLF\ninjection",
36+
"aws-request-id":"2fd42680-a990-4b24-ae28-4213c86eb512"
3437
}
3538
{
36-
"level": "TRACE",
37-
"logname": "uk.bot_by.slf4j_demo.BotHandler",
38-
"message": "CRLF\r\ninjection",
39-
"aws-request-id": "7b9af47e-d861-44b4-bde7-fa2e84ffb7cf"
39+
"level":"TRACE",
40+
"logname":"uk.bot_by.slf4j_demo.BotHandler",
41+
"markers":[
42+
"important"
43+
],
44+
"message":"CRLF\r\ninjection",
45+
"aws-request-id":"2fd42680-a990-4b24-ae28-4213c86eb512"
4046
}
4147
{
42-
"level": "TRACE",
43-
"logname": "uk.bot_by.slf4j_demo.BotHandler",
44-
"message": "CRLF\rinjection",
45-
"aws-request-id": "7b9af47e-d861-44b4-bde7-fa2e84ffb7cf"
48+
"level":"TRACE",
49+
"logname":"uk.bot_by.slf4j_demo.BotHandler",
50+
"markers":[
51+
"important"
52+
],
53+
"message":"CRLF\rinjection",
54+
"aws-request-id":"2fd42680-a990-4b24-ae28-4213c86eb512"
4655
}
4756
{
48-
"stack-trace": "java.lang.Throwable: Printable Stacktrace Demo\n\tat uk.bot_by.slf4j_demo.BotHandler.handleRequest(BotHandler.java:36)\n\tat uk.bot_by.slf4j_demo.BotHandler.handleRequest(BotHandler.java:12)\n\tat lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:205)\n\tat lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:905)\n\tat lambdainternal.AWSLambda.startRuntime(AWSLambda.java:261)\n\tat lambdainternal.AWSLambda.startRuntime(AWSLambda.java:200)\n\tat lambdainternal.AWSLambda.main(AWSLambda.java:194)\n",
49-
"level": "WARN",
50-
"logname": "uk.bot_by.slf4j_demo.BotHandler",
51-
"message": "printable stacktrace",
52-
"aws-request-id": "7b9af47e-d861-44b4-bde7-fa2e84ffb7cf"
57+
"stack-trace":"java.lang.Throwable: Printable Stacktrace Demo\n\tat uk.bot_by.slf4j_demo.BotHandler.handleRequest(BotHandler.java:36)...",
58+
"throwable-message":"Printable Stacktrace Demo",
59+
"throwable-class":"java.lang.Throwable",
60+
"level":"WARN",
61+
"logname":"uk.bot_by.slf4j_demo.BotHandler",
62+
"message":"printable stacktrace",
63+
"aws-request-id":"2fd42680-a990-4b24-ae28-4213c86eb512"
5364
}
5465
```
5566

example-lambda/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1818
xmlns="http://maven.apache.org/POM/4.0.0"
1919
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20-
<artifactId>slf4j-aws-lambda-example</artifactId>
20+
<artifactId>example-lambda</artifactId>
2121
<build>
2222
<plugins>
2323
<plugin>

json-logger/src/main/java/uk/bot_by/aws_lambda/slf4j/json_output/JSONLoggerOutput.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.io.ByteArrayOutputStream;
2323
import java.io.PrintStream;
2424
import java.text.DateFormat;
25+
import java.util.ArrayList;
2526
import java.util.Date;
2627
import org.jetbrains.annotations.NotNull;
2728
import org.jetbrains.annotations.Nullable;
@@ -42,6 +43,7 @@ public class JSONLoggerOutput implements AWSLambdaLoggerOutput {
4243
private static final String RELATIVE_TIMESTAMP = "relative-timestamp";
4344
private static final String LEVEL = "level";
4445
private static final String LOGNAME = "logname";
46+
private static final String MARKERS = "markers";
4547
private static final String MESSAGE = "message";
4648
private static final String STACK_TRACE = "stack-trace";
4749
private static final Long START_TIME = System.currentTimeMillis();
@@ -62,6 +64,16 @@ private static void addLogName(AWSLambdaLoggerConfiguration configuration,
6264
}
6365
}
6466

67+
private static void addMarkerAndReferences(Marker marker, JSONObject jsonObject) {
68+
if (nonNull(marker)) {
69+
var markers = new ArrayList<String>();
70+
71+
marker.iterator().forEachRemaining(referenceMarker -> markers.add(referenceMarker.getName()));
72+
markers.add(0, marker.getName());
73+
jsonObject.put(MARKERS, markers);
74+
}
75+
}
76+
6577
private static void addRequestId(AWSLambdaLoggerConfiguration configuration,
6678
JSONObject jsonObject) {
6779
if (nonNull(MDC.get(configuration.requestId()))) {
@@ -143,6 +155,7 @@ void log(@NotNull AWSLambdaLoggerConfiguration configuration, @NotNull LambdaLog
143155
addRequestId(configuration, jsonObject);
144156
addTimestamp(configuration, jsonObject);
145157
addThread(configuration, jsonObject);
158+
addMarkerAndReferences(marker, jsonObject);
146159
addLevel(level, jsonObject);
147160
addLogName(configuration, jsonObject);
148161
jsonObject.put(MESSAGE, message);

json-logger/src/test/java/uk/bot_by/aws_lambda/slf4j/json_output/JSONLoggerOutputTest.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,48 @@ void logMessage() {
120120
stringCaptor.getValue(), true);
121121
}
122122

123+
@DisplayName("Marker")
124+
@Test
125+
void marker() {
126+
// given
127+
var marker = new BasicMarkerFactory().getMarker("aMarker");
128+
129+
when(configuration.requestId()).thenReturn("request#");
130+
131+
// when
132+
loggerOutput.log(configuration, lambdaLogger, marker, Level.ERROR, "test error message", null);
133+
134+
// then
135+
verify(lambdaLogger).log(stringCaptor.capture());
136+
137+
assertEquals(
138+
"{\"level\":\"ERROR\",\"markers\":[\"aMarker\"],\"message\":\"test error message\"}",
139+
stringCaptor.getValue(), true);
140+
}
141+
142+
@DisplayName("Markers")
143+
@Test
144+
void markers() {
145+
// given
146+
var markerFactory = new BasicMarkerFactory();
147+
var marker = markerFactory.getMarker("aMarker");
148+
marker.add(markerFactory.getMarker("marker a"));
149+
marker.add(markerFactory.getMarker("marker 1"));
150+
marker.add(markerFactory.getMarker("marker *"));
151+
152+
when(configuration.requestId()).thenReturn("request#");
153+
154+
// when
155+
loggerOutput.log(configuration, lambdaLogger, marker, Level.ERROR, "test error message", null);
156+
157+
// then
158+
verify(lambdaLogger).log(stringCaptor.capture());
159+
160+
assertEquals(
161+
"{\"level\":\"ERROR\",\"markers\":[\"aMarker\",\"marker a\",\"marker 1\",\"marker *\"],\"message\":\"test error message\"}",
162+
stringCaptor.getValue(), true);
163+
}
164+
123165
@DisplayName("Show relative time")
124166
@Test
125167
void relativeTime() {

0 commit comments

Comments
 (0)