Skip to content

Commit 634d13e

Browse files
committed
code review last episode
1 parent fd334db commit 634d13e

File tree

17 files changed

+77
-76
lines changed

17 files changed

+77
-76
lines changed

docs/core/logging.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ You can leverage the standard configuration files (_log4j2.xml_ or _logback.xml_
233233
<?xml version="1.0" encoding="UTF-8"?>
234234
<configuration>
235235
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
236-
<encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
236+
<encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
237237
</encoder>
238238
</appender>
239239
<logger name="com.example" level="DEBUG" additivity="false">
@@ -1008,7 +1008,7 @@ Logback configuration is done in _logback.xml_ and the Powertools [`LambdaJsonEn
10081008

10091009
```xml
10101010
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
1011-
<encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
1011+
<encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
10121012
</encoder>
10131013
</appender>
10141014
```
@@ -1020,7 +1020,7 @@ The `LambdaJsonEncoder` can be customized in different ways:
10201020
With the following configuration, you choose to log all the JSON messages as JSON and not as String (default is `false`):
10211021

10221022
```xml
1023-
<encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
1023+
<encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
10241024
<logMessagesAsJson>true</logMessagesAsJson>
10251025
</encoder>
10261026
```
@@ -1030,7 +1030,7 @@ Utility by default emits `timestamp` field in the logs in format `yyyy-MM-dd'T'H
10301030
If you need to customize format and timezone, you can change use the following:
10311031

10321032
```xml
1033-
<encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
1033+
<encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
10341034
<timestampFormat>yyyy-MM-dd HH:mm:ss</timestampFormat>
10351035
<timestampFormatTimezoneId>Europe/Paris</timestampFormatTimezoneId>
10361036
</encoder>
@@ -1041,7 +1041,7 @@ If you need to customize format and timezone, you can change use the following:
10411041
- You can use a standard `ThrowableHandlingConverter` to customize the exception format (default is no converter). Example:
10421042

10431043
```xml
1044-
<encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
1044+
<encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
10451045
<throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
10461046
<maxDepthPerThrowable>30</maxDepthPerThrowable>
10471047
<maxLength>2048</maxLength>
@@ -1058,15 +1058,15 @@ If you need to customize format and timezone, you can change use the following:
10581058
- You can choose to add information about threads (default is `false`):
10591059

10601060
```xml
1061-
<encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
1061+
<encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
10621062
<includeThreadInfo>true</includeThreadInfo>
10631063
</encoder>
10641064
```
10651065

10661066
- You can even choose to remove Powertools information from the logs like function name, arn:
10671067

10681068
```xml
1069-
<encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
1069+
<encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
10701070
<includePowertoolsInfo>false</includePowertoolsInfo>
10711071
</encoder>
10721072
```
@@ -1134,7 +1134,7 @@ Use the `LambdaEcsEncoder` rather than the `LambdaJsonEncoder` when configuring
11341134
```xml hl_lines="3"
11351135
<configuration>
11361136
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
1137-
<encoder class="software.amazon.lambda.powertools.logging.LambdaEcsEncoder">
1137+
<encoder class="software.amazon.lambda.powertools.logging.logback.LambdaEcsEncoder">
11381138
</encoder>
11391139
</appender>
11401140
<root level="INFO">
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@
1212
*
1313
*/
1414

15-
package software.amazon.lambda.powertools.logging.internal;
15+
package software.amazon.lambda.powertools.logging.log4.internal;
1616

1717
import org.apache.logging.log4j.Level;
1818
import org.apache.logging.log4j.LogManager;
1919
import org.apache.logging.log4j.core.LoggerContext;
2020
import org.apache.logging.log4j.core.config.Configurator;
2121
import org.slf4j.Logger;
22+
import software.amazon.lambda.powertools.logging.internal.LoggingManager;
2223

2324
/**
2425
* LoggingManager for Log4j2 (see {@link LoggingManager}).
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
software.amazon.lambda.powertools.logging.internal.Log4jLoggingManager
1+
software.amazon.lambda.powertools.logging.log4.internal.Log4jLoggingManager

powertools-logging/powertools-logging-log4j/src/test/java/software/amazon/lambda/powertools/logging/internal/Log4jLoggingManagerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.slf4j.Logger;
1111
import org.slf4j.LoggerFactory;
1212
import org.slf4j.event.Level;
13+
import software.amazon.lambda.powertools.logging.log4.internal.Log4jLoggingManager;
1314

1415
class Log4jLoggingManagerTest {
1516

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
*/
1414

15-
package software.amazon.lambda.powertools.logging;
15+
package software.amazon.lambda.powertools.logging.logback;
1616

1717
import static java.nio.charset.StandardCharsets.UTF_8;
1818
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_ARN;
@@ -31,7 +31,7 @@
3131
import ch.qos.logback.core.encoder.EncoderBase;
3232
import java.util.Map;
3333
import software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor;
34-
import software.amazon.lambda.powertools.logging.internal.LambdaEcsSerializer;
34+
import software.amazon.lambda.powertools.logging.logback.internal.LambdaEcsSerializer;
3535

3636

3737
/**
@@ -128,7 +128,7 @@ public byte[] footerBytes() {
128128
* (default is <b>null</b>, no throwableConverter):
129129
* <br/>
130130
* <pre>{@code
131-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaEcsEncoder">
131+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaEcsEncoder">
132132
* <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
133133
* <maxDepthPerThrowable>30</maxDepthPerThrowable>
134134
* <maxLength>2048</maxLength>
@@ -160,7 +160,7 @@ public void setThrowableConverter(ThrowableHandlingConverter throwableConverter)
160160
* We strongly recommend to keep these information.
161161
* <br/>
162162
* <pre>{@code
163-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaEcsEncoder">
163+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaEcsEncoder">
164164
* <includeCloudInfo>false</includeCloudInfo>
165165
* </encoder>
166166
* }</pre>
@@ -186,7 +186,7 @@ public void setIncludeCloudInfo(boolean includeCloudInfo) {
186186
* We strongly recommend to keep these information.
187187
* <br/>
188188
* <pre>{@code
189-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaEcsEncoder">
189+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaEcsEncoder">
190190
* <includeFaasInfo>false</includeFaasInfo>
191191
* </encoder>
192192
* }</pre>
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
*/
1414

15-
package software.amazon.lambda.powertools.logging;
15+
package software.amazon.lambda.powertools.logging.logback;
1616

1717
import static java.nio.charset.StandardCharsets.UTF_8;
1818
import static software.amazon.lambda.powertools.logging.LoggingUtils.LOG_MESSAGES_AS_JSON;
@@ -23,7 +23,7 @@
2323
import ch.qos.logback.classic.spi.IThrowableProxy;
2424
import ch.qos.logback.classic.spi.ThrowableProxy;
2525
import ch.qos.logback.core.encoder.EncoderBase;
26-
import software.amazon.lambda.powertools.logging.internal.LambdaJsonSerializer;
26+
import software.amazon.lambda.powertools.logging.logback.internal.LambdaJsonSerializer;
2727

2828
/**
2929
* Custom encoder for logback that encodes logs in JSON format.
@@ -97,7 +97,7 @@ public byte[] footerBytes() {
9797
* Note that if you use the Lambda Advanced Logging Configuration, you should keep the default format.
9898
* <br/>
9999
* <pre>{@code
100-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
100+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
101101
* <timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSZz</timestampFormat>
102102
* </encoder>
103103
* }</pre>
@@ -112,7 +112,7 @@ public void setTimestampFormat(String timestampFormat) {
112112
* Specify the format of the time zone id for timestamp (default is <b>null</b>, no timezone):
113113
* <br/>
114114
* <pre>{@code
115-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
115+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
116116
* <timestampFormatTimezoneId>Europe/Paris</timestampFormatTimezoneId>
117117
* </encoder>
118118
* }</pre>
@@ -128,7 +128,7 @@ public void setTimestampFormatTimezoneId(String timestampFormatTimezoneId) {
128128
* (default is <b>null</b>, no throwableConverter):
129129
* <br/>
130130
* <pre>{@code
131-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
131+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
132132
* <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
133133
* <maxDepthPerThrowable>30</maxDepthPerThrowable>
134134
* <maxLength>2048</maxLength>
@@ -152,7 +152,7 @@ public void setThrowableConverter(ThrowableHandlingConverter throwableConverter)
152152
* Specify if thread information should be logged (default is <b>false</b>)
153153
* <br/>
154154
* <pre>{@code
155-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
155+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
156156
* <includeThreadInfo>true</includeThreadInfo>
157157
* </encoder>
158158
* }</pre>
@@ -180,7 +180,7 @@ public void setIncludeThreadInfo(boolean includeThreadInfo) {
180180
* We strongly recommend to keep these information.
181181
* <br/>
182182
* <pre>{@code
183-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
183+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
184184
* <includePowertoolsInfo>false</includePowertoolsInfo>
185185
* </encoder>
186186
* }</pre>
@@ -195,7 +195,7 @@ public void setIncludePowertoolsInfo(boolean includePowertoolsInfo) {
195195
* Specify if messages should be logged as JSON, without escaping string (default is <b>false</b>):
196196
* <br/>
197197
* <pre>{@code
198-
* <encoder class="software.amazon.lambda.powertools.logging.LambdaJsonEncoder">
198+
* <encoder class="software.amazon.lambda.powertools.logging.logback.LambdaJsonEncoder">
199199
* <logMessagesAsJson>true</logMessagesAsJson>
200200
* </encoder>
201201
* }</pre>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
*/
1414

15-
package software.amazon.lambda.powertools.logging.internal;
15+
package software.amazon.lambda.powertools.logging.logback.internal;
1616

1717
/**
1818
* Json tools to serialize attributes manually, to avoid using further dependencies (jackson, gson...)
Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@
1212
*
1313
*/
1414

15-
package software.amazon.lambda.powertools.logging.internal;
16-
17-
import static software.amazon.lambda.powertools.logging.internal.JsonUtils.serializeAttributeAsString;
15+
package software.amazon.lambda.powertools.logging.logback.internal;
1816

1917
import ch.qos.logback.classic.Level;
2018
import java.text.DateFormat;
@@ -25,6 +23,7 @@
2523
import java.util.TimeZone;
2624
import java.util.TreeMap;
2725
import java.util.regex.Matcher;
26+
import software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields;
2827

2928
/**
3029
* This class will serialize the log events in ecs format (ElasticSearch).<br/>
@@ -83,28 +82,28 @@ public static void serializeTimestamp(StringBuilder builder, long timestamp, Str
8382
}
8483
formattedTimestamp = format.format(date);
8584
}
86-
serializeAttributeAsString(builder, TIMESTAMP_ATTR_NAME, formattedTimestamp, false);
85+
JsonUtils.serializeAttributeAsString(builder, TIMESTAMP_ATTR_NAME, formattedTimestamp, false);
8786
}
8887

8988
public static void serializeThreadName(StringBuilder builder, String threadName) {
9089
if (threadName != null) {
91-
serializeAttributeAsString(builder, THREAD_ATTR_NAME, threadName);
90+
JsonUtils.serializeAttributeAsString(builder, THREAD_ATTR_NAME, threadName);
9291
}
9392
}
9493

9594
public static void serializeLogLevel(StringBuilder builder, Level level) {
96-
serializeAttributeAsString(builder, LEVEL_ATTR_NAME, level.toString());
95+
JsonUtils.serializeAttributeAsString(builder, LEVEL_ATTR_NAME, level.toString());
9796
}
9897

9998
public static void serializeFormattedMessage(StringBuilder builder, String formattedMessage) {
100-
serializeAttributeAsString(builder, FORMATTED_MESSAGE_ATTR_NAME,
99+
JsonUtils.serializeAttributeAsString(builder, FORMATTED_MESSAGE_ATTR_NAME,
101100
formattedMessage.replace("\"", Matcher.quoteReplacement("\\\"")));
102101
}
103102

104103
public static void serializeException(StringBuilder builder, String className, String message, String stackTrace) {
105-
serializeAttributeAsString(builder, EXCEPTION_MSG_ATTR_NAME, message);
106-
serializeAttributeAsString(builder, EXCEPTION_CLASS_ATTR_NAME, className);
107-
serializeAttributeAsString(builder, EXCEPTION_STACK_ATTR_NAME, stackTrace);
104+
JsonUtils.serializeAttributeAsString(builder, EXCEPTION_MSG_ATTR_NAME, message);
105+
JsonUtils.serializeAttributeAsString(builder, EXCEPTION_CLASS_ATTR_NAME, className);
106+
JsonUtils.serializeAttributeAsString(builder, EXCEPTION_STACK_ATTR_NAME, stackTrace);
108107
}
109108

110109
public static void serializeException(StringBuilder builder, Throwable throwable) {
@@ -113,76 +112,76 @@ public static void serializeException(StringBuilder builder, Throwable throwable
113112
}
114113

115114
public static void serializeThreadId(StringBuilder builder, String threadId) {
116-
serializeAttributeAsString(builder, THREAD_ID_ATTR_NAME, threadId);
115+
JsonUtils.serializeAttributeAsString(builder, THREAD_ID_ATTR_NAME, threadId);
117116
}
118117

119118
public static void serializeAdditionalFields(StringBuilder builder, Map<String, String> mdc) {
120119
TreeMap<String, String> sortedMap = new TreeMap<>(mdc);
121120

122121
sortedMap.forEach((k, v) -> {
123122
if (!PowertoolsLoggedFields.stringValues().contains(k)) {
124-
serializeAttributeAsString(builder, k, v);
123+
JsonUtils.serializeAttributeAsString(builder, k, v);
125124
}
126125
});
127126
}
128127

129128
public static void serializeEcsVersion(StringBuilder builder, String ecsVersion) {
130-
serializeAttributeAsString(builder, ECS_VERSION_ATTR_NAME, ecsVersion);
129+
JsonUtils.serializeAttributeAsString(builder, ECS_VERSION_ATTR_NAME, ecsVersion);
131130
}
132131

133132
public static void serializeServiceName(StringBuilder builder, String serviceName) {
134-
serializeAttributeAsString(builder, SERVICE_NAME_ATTR_NAME, serviceName);
133+
JsonUtils.serializeAttributeAsString(builder, SERVICE_NAME_ATTR_NAME, serviceName);
135134
}
136135

137136
public static void serializeServiceVersion(StringBuilder builder, String serviceVersion) {
138-
serializeAttributeAsString(builder, SERVICE_VERSION_ATTR_NAME, serviceVersion);
137+
JsonUtils.serializeAttributeAsString(builder, SERVICE_VERSION_ATTR_NAME, serviceVersion);
139138
}
140139

141140
public static void serializeLoggerName(StringBuilder builder, String loggerName) {
142-
serializeAttributeAsString(builder, LOGGER_ATTR_NAME, loggerName);
141+
JsonUtils.serializeAttributeAsString(builder, LOGGER_ATTR_NAME, loggerName);
143142
}
144143

145144
public static void serializeCloudProvider(StringBuilder builder, String cloudProvider) {
146-
serializeAttributeAsString(builder, CLOUD_PROVIDER_ATTR_NAME, cloudProvider);
145+
JsonUtils.serializeAttributeAsString(builder, CLOUD_PROVIDER_ATTR_NAME, cloudProvider);
147146
}
148147

149148
public static void serializeCloudService(StringBuilder builder, String cloudService) {
150-
serializeAttributeAsString(builder, CLOUD_SERVICE_ATTR_NAME, cloudService);
149+
JsonUtils.serializeAttributeAsString(builder, CLOUD_SERVICE_ATTR_NAME, cloudService);
151150
}
152151

153152
public static void serializeCloudRegion(StringBuilder builder, String cloudRegion) {
154-
serializeAttributeAsString(builder, CLOUD_REGION_ATTR_NAME, cloudRegion);
153+
JsonUtils.serializeAttributeAsString(builder, CLOUD_REGION_ATTR_NAME, cloudRegion);
155154
}
156155

157156
public static void serializeCloudAccountId(StringBuilder builder, String cloudAccountId) {
158-
serializeAttributeAsString(builder, CLOUD_ACCOUNT_ATTR_NAME, cloudAccountId);
157+
JsonUtils.serializeAttributeAsString(builder, CLOUD_ACCOUNT_ATTR_NAME, cloudAccountId);
159158
}
160159

161160
public static void serializeColdStart(StringBuilder builder, String coldStart) {
162-
serializeAttributeAsString(builder, FUNCTION_COLD_START_ATTR_NAME, coldStart);
161+
JsonUtils.serializeAttributeAsString(builder, FUNCTION_COLD_START_ATTR_NAME, coldStart);
163162
}
164163

165164
public static void serializeFunctionExecutionId(StringBuilder builder, String requestId) {
166-
serializeAttributeAsString(builder, FUNCTION_REQUEST_ID_ATTR_NAME, requestId);
165+
JsonUtils.serializeAttributeAsString(builder, FUNCTION_REQUEST_ID_ATTR_NAME, requestId);
167166
}
168167

169168
public static void serializeFunctionId(StringBuilder builder, String functionArn) {
170-
serializeAttributeAsString(builder, FUNCTION_ARN_ATTR_NAME, functionArn);
169+
JsonUtils.serializeAttributeAsString(builder, FUNCTION_ARN_ATTR_NAME, functionArn);
171170
}
172171

173172
public static void serializeFunctionName(StringBuilder builder, String functionName) {
174-
serializeAttributeAsString(builder, FUNCTION_NAME_ATTR_NAME, functionName);
173+
JsonUtils.serializeAttributeAsString(builder, FUNCTION_NAME_ATTR_NAME, functionName);
175174
}
176175

177176
public static void serializeFunctionVersion(StringBuilder builder, String functionVersion) {
178-
serializeAttributeAsString(builder, FUNCTION_VERSION_ATTR_NAME, functionVersion);
177+
JsonUtils.serializeAttributeAsString(builder, FUNCTION_VERSION_ATTR_NAME, functionVersion);
179178
}
180179

181180
public static void serializeFunctionMemory(StringBuilder builder, String functionMemory) {
182-
serializeAttributeAsString(builder, FUNCTION_MEMORY_ATTR_NAME, functionMemory);
181+
JsonUtils.serializeAttributeAsString(builder, FUNCTION_MEMORY_ATTR_NAME, functionMemory);
183182
}
184183

185184
public static void serializeTraceId(StringBuilder builder, String traceId) {
186-
serializeAttributeAsString(builder, FUNCTION_TRACE_ID_ATTR_NAME, traceId);
185+
JsonUtils.serializeAttributeAsString(builder, FUNCTION_TRACE_ID_ATTR_NAME, traceId);
187186
}
188187
}

0 commit comments

Comments
 (0)