Skip to content

Commit d94a0c5

Browse files
committed
add more tests
1 parent 3505679 commit d94a0c5

File tree

5 files changed

+212
-82
lines changed

5 files changed

+212
-82
lines changed

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

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
import static software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor.serviceName;
2828
import static software.amazon.lambda.powertools.logging.LoggingUtils.appendKey;
2929
import static software.amazon.lambda.powertools.logging.LoggingUtils.appendKeys;
30+
import static software.amazon.lambda.powertools.logging.internal.LoggingConstants.POWERTOOLS_LOG_EVENT;
31+
import static software.amazon.lambda.powertools.logging.internal.LoggingConstants.POWERTOOLS_LOG_LEVEL;
32+
import static software.amazon.lambda.powertools.logging.internal.LoggingConstants.POWERTOOLS_SAMPLING_RATE;
3033
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_COLD_START;
3134
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_TRACE_ID;
3235
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.SERVICE;
@@ -67,42 +70,41 @@
6770
@DeclarePrecedence("*, software.amazon.lambda.powertools.logging.internal.LambdaLoggingAspect")
6871
public final class LambdaLoggingAspect {
6972
private static final Logger LOG = LoggerFactory.getLogger(LambdaLoggingAspect.class);
70-
private static final String POWERTOOLS_LOG_LEVEL = System.getenv("POWERTOOLS_LOG_LEVEL");
71-
7273
private static final Random SAMPLER = new Random();
73-
private static String SAMPLING_RATE = System.getenv("POWERTOOLS_LOGGER_SAMPLE_RATE"); /* not final for test purpose */
74-
75-
private static String LOG_EVENT = System.getenv("POWERTOOLS_LOGGER_LOG_EVENT"); /* not final for test purpose */
76-
77-
private static Level LEVEL_AT_INITIALISATION;
74+
static Level LEVEL_AT_INITIALISATION; /* not final for test purpose */
7875

79-
private static final LoggingManager loggingManager;
76+
private static final LoggingManager LOGGING_MANAGER;
8077

8178
static {
82-
loggingManager = getLoggingManagerFromServiceLoader();
79+
LOGGING_MANAGER = getLoggingManagerFromServiceLoader();
8380

84-
LEVEL_AT_INITIALISATION = loggingManager.getLogLevel(LOG);
81+
setLogLevel();
82+
83+
LEVEL_AT_INITIALISATION = LOGGING_MANAGER.getLogLevel(LOG);
84+
}
8585

86+
static void setLogLevel() {
8687
if (POWERTOOLS_LOG_LEVEL != null) {
87-
Level powertoolsLevel = getLevel(POWERTOOLS_LOG_LEVEL);
88+
Level powertoolsLevel = getLevelFromEnvironmentVariable(POWERTOOLS_LOG_LEVEL);
8889
if (LAMBDA_LOG_LEVEL != null) {
89-
Level lambdaLevel = getLevel(LAMBDA_LOG_LEVEL);
90+
Level lambdaLevel = getLevelFromEnvironmentVariable(LAMBDA_LOG_LEVEL);
9091
if (powertoolsLevel.toInt() < lambdaLevel.toInt()) {
9192
LOG.warn("Current log level ({}) does not match AWS Lambda Advanced Logging Controls minimum log level ({}). This can lead to data loss, consider adjusting them.",
9293
POWERTOOLS_LOG_LEVEL, LAMBDA_LOG_LEVEL);
9394
}
9495
}
9596
resetLogLevels(powertoolsLevel);
9697
} else if (LAMBDA_LOG_LEVEL != null) {
97-
resetLogLevels(getLevel(LAMBDA_LOG_LEVEL));
98+
resetLogLevels(getLevelFromEnvironmentVariable(LAMBDA_LOG_LEVEL));
9899
}
99100
}
100101

101-
private static Level getLevel(String level) {
102-
if (Arrays.stream(Level.values()).anyMatch(slf4jLevel -> slf4jLevel.name().equals(level))) {
103-
return Level.valueOf(level);
102+
private static Level getLevelFromEnvironmentVariable(String level) {
103+
if (Arrays.stream(Level.values()).anyMatch(slf4jLevel -> slf4jLevel.name().equalsIgnoreCase(level))) {
104+
return Level.valueOf(level.toUpperCase());
104105
} else {
105-
if ("FATAL".equals(level)) {
106+
// FATAL does not exist in slf4j
107+
if ("FATAL".equalsIgnoreCase(level)) {
106108
return Level.ERROR;
107109
}
108110
}
@@ -142,7 +144,7 @@ private static LoggingManager getLoggingManagerFromServiceLoader() {
142144
}
143145

144146
private static void resetLogLevels(Level logLevel) {
145-
loggingManager.resetLogLevel(logLevel);
147+
LOGGING_MANAGER.resetLogLevel(logLevel);
146148
}
147149

148150
@SuppressWarnings({"EmptyMethod"})
@@ -170,7 +172,7 @@ public Object around(ProceedingJoinPoint pjp,
170172

171173
getXrayTraceId().ifPresent(xRayTraceId -> appendKey(FUNCTION_TRACE_ID.getName(), xRayTraceId));
172174

173-
if (logging.logEvent() || "true".equals(LOG_EVENT)) {
175+
if (logging.logEvent() || "true".equals(POWERTOOLS_LOG_EVENT)) {
174176
proceedArgs = logEvent(pjp);
175177
}
176178

@@ -213,14 +215,14 @@ private void setLogLevelBasedOnSamplingRate(final ProceedingJoinPoint pjp,
213215

214216
LOG.debug("Changed log level to DEBUG based on Sampling configuration. "
215217
+ "Sampling Rate: {}, Sampler Value: {}.", samplingRate, sample);
216-
} else if (LEVEL_AT_INITIALISATION != loggingManager.getLogLevel(LOG)) {
218+
} else if (LEVEL_AT_INITIALISATION != LOGGING_MANAGER.getLogLevel(LOG)) {
217219
resetLogLevels(LEVEL_AT_INITIALISATION);
218220
}
219221
}
220222
}
221223

222224
private double samplingRate(final Logging logging) {
223-
String sampleRate = SAMPLING_RATE;
225+
String sampleRate = POWERTOOLS_SAMPLING_RATE;
224226
if (null != sampleRate) {
225227
try {
226228
return Double.parseDouble(sampleRate);

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@
1414

1515
package software.amazon.lambda.powertools.logging.internal;
1616

17-
public class LoggingConstants {
18-
public static final String LAMBDA_LOG_LEVEL = System.getenv("AWS_LAMBDA_LOG_LEVEL");
17+
class LoggingConstants {
18+
static String LAMBDA_LOG_LEVEL = System.getenv("AWS_LAMBDA_LOG_LEVEL"); /* not final for test purpose */
1919

20-
public static final String LAMBDA_LOG_FORMAT = System.getenv("AWS_LAMBDA_LOG_FORMAT");
20+
static String POWERTOOLS_LOG_LEVEL = System.getenv("POWERTOOLS_LOG_LEVEL"); /* not final for test purpose */
2121

22-
public static final String LOG_DATE_RFC3339_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
22+
static String POWERTOOLS_SAMPLING_RATE = System.getenv("POWERTOOLS_LOGGER_SAMPLE_RATE"); /* not final for test purpose */
23+
24+
static String POWERTOOLS_LOG_EVENT = System.getenv("POWERTOOLS_LOGGER_LOG_EVENT"); /* not final for test purpose */
2325

2426
private LoggingConstants() {
2527
// constants

powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/handlers/PowertoolsLogEnabled.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public class PowertoolsLogEnabled implements RequestHandler<Object, Object> {
2626
@Override
2727
@Logging
2828
public Object handleRequest(Object input, Context context) {
29+
LOG.error("Test error event");
30+
LOG.warn("Test warn event");
2931
LOG.info("Test event");
3032
LOG.debug("Test debug event");
3133
return null;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import com.amazonaws.services.lambda.runtime.RequestHandler;
1919
import software.amazon.lambda.powertools.logging.Logging;
2020

21-
public class PowerToolLogEventDisabled implements RequestHandler<Object, Object> {
21+
public class PowertoolsLogEventDisabled implements RequestHandler<Object, Object> {
2222

2323
@Logging
2424
@Override

0 commit comments

Comments
 (0)