Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions docs/content/core/logger.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ package helloworld;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import software.amazon.lambda.logging.PowerLogger;
import software.amazon.lambda.logging.PowerToolsLogging;
import software.amazon.lambda.logging.PowertoolsLogger;
import software.amazon.lambda.logging.PowertoolsLogging;
...

/**
Expand All @@ -76,7 +76,7 @@ public class App implements RequestHandler<APIGatewayProxyRequestEvent, APIGatew

Logger log = LogManager.getLogger();

@PowerToolsLogging
@PowertoolsLogging
public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
...
}
Expand All @@ -94,8 +94,8 @@ package helloworld;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import software.amazon.lambda.logging.PowerLogger;
import software.amazon.lambda.logging.PowerToolsLogging;
import software.amazon.lambda.logging.PowertoolsLogger;
import software.amazon.lambda.logging.PowertoolsLogging;
...

/**
Expand All @@ -105,7 +105,7 @@ public class App implements RequestHandler<APIGatewayProxyRequestEvent, APIGatew

Logger log = LogManager.getLogger();

@PowerToolsLogging(logEvent = true)
@PowertoolsLogging(logEvent = true)
public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
...
}
Expand All @@ -121,8 +121,8 @@ package helloworld;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import software.amazon.lambda.logging.PowerLogger;
import software.amazon.lambda.logging.PowerToolsLogging;
import software.amazon.lambda.logging.PowertoolsLogger;
import software.amazon.lambda.logging.PowertoolsLogging;
...

/**
Expand All @@ -132,10 +132,10 @@ public class App implements RequestHandler<APIGatewayProxyRequestEvent, APIGatew

Logger log = LogManager.getLogger();

@PowerToolsLogging(logEvent = true)
@PowertoolsLogging(logEvent = true)
public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
...
PowerLogger.appendKey("test", "willBeLogged");
PowertoolsLogger.appendKey("test", "willBeLogged");
...
}
}
Expand Down
24 changes: 12 additions & 12 deletions example/HelloWorldFunction/src/main/java/helloworld/App.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
package helloworld;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
Expand All @@ -16,11 +8,19 @@
import com.amazonaws.xray.entities.Entity;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import software.amazon.lambda.powertools.logging.PowerLogger;
import software.amazon.lambda.powertools.logging.PowerToolsLogging;
import software.amazon.lambda.powertools.logging.PowertoolsLogger;
import software.amazon.lambda.powertools.logging.PowertoolsLogging;
import software.amazon.lambda.powertools.tracing.PowerToolsTracing;
import software.amazon.lambda.powertools.tracing.PowerTracer;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

import static software.amazon.lambda.powertools.tracing.PowerTracer.putMetadata;
import static software.amazon.lambda.powertools.tracing.PowerTracer.withEntitySubsegment;

Expand All @@ -31,15 +31,15 @@ public class App implements RequestHandler<APIGatewayProxyRequestEvent, APIGatew

Logger log = LogManager.getLogger();

@PowerToolsLogging(logEvent = true)
@PowertoolsLogging(logEvent = true)
@PowerToolsTracing
public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
Map<String, String> headers = new HashMap<>();

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

PowerLogger.appendKey("test", "willBeLogged");
PowertoolsLogger.appendKey("test", "willBeLogged");

APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent()
.withHeaders(headers);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package helloworld;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import com.fasterxml.jackson.databind.ObjectMapper;
import software.amazon.lambda.powertools.logging.PowertoolsLogging;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import com.fasterxml.jackson.databind.ObjectMapper;
import software.amazon.lambda.powertools.logging.PowerToolsLogging;

public class AppStream implements RequestStreamHandler {
private static final ObjectMapper mapper = new ObjectMapper();

@Override
@PowerToolsLogging(logEvent = true)
@PowertoolsLogging(logEvent = true)
public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
Map map = mapper.readValue(input, Map.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
import org.apache.logging.log4j.ThreadContext;

/**
* A class of helper functions to add additional functionality to PowerToolsLogging.
* A class of helper functions to add additional functionality to PowertoolsLogging.
*
* {@see PowerToolsLogging}
* {@see PowertoolsLogging}
*/
public class PowerLogger {
public class PowertoolsLogger {

/**
* Appends an additional key and value to each log entry made. Duplicate values
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@
import java.lang.annotation.Target;

/**
* {@code PowerToolsLogging} is used to signal that the annotated method should be
* extended with PowerToolsLogging functionality.
* {@code PowertoolsLogging} is used to signal that the annotated method should be
* extended with PowertoolsLogging functionality.
*
* <p>{@code PowerToolsLogging} provides an opinionated logger with output structured as JSON.</p>
* <p>{@code PowertoolsLogging} provides an opinionated logger with output structured as JSON.</p>
*
* <p>{@code PowerToolsLogging} should be used with handleRequest method of a class
* <p>{@code PowertoolsLogging} should be used with handleRequest method of a class
* which implements either
* {@code com.amazonaws.services.lambda.runtime.RequestHandler} or
* {@code com.amazonaws.services.lambda.runtime.RequestStreamHandler}.</p>
*
* <p>By default {@code PowerToolsLogging} will load the following keys and values from the Lambda
* <p>By default {@code PowertoolsLogging} will load the following keys and values from the Lambda
* {@code com.amazonaws.services.lambda.runtime.Context}</p>
*
* <ul>
Expand All @@ -39,7 +39,7 @@
* <li>MemoryLimitInMB</li>
* </ul>
*
* <p>By default {@code PowerToolsLogging} will also create keys for:</p>
* <p>By default {@code PowertoolsLogging} will also create keys for:</p>
*
* <ul>
* <li>coldStart - True if this is the first invocation of this Lambda execution environment; else False</li>
Expand All @@ -50,14 +50,14 @@
*
* <p>The data and time of the log event will be written using {@link java.time.format.DateTimeFormatter#ISO_ZONED_DATE_TIME}</p>
*
* <p>By default {@code PowerToolsLogging} will not log the event which has trigger the invoke of the Lambda function.
* This can be enabled using {@code @PowerToolsLogging(logEvent = true)}.</p>
* <p>By default {@code PowertoolsLogging} will not log the event which has trigger the invoke of the Lambda function.
* This can be enabled using {@code @PowertoolsLogging(logEvent = true)}.</p>
*
* <p>To append additional keys to each log entry you can use {@link PowerLogger#appendKey(String, String)}</p>
* <p>To append additional keys to each log entry you can use {@link PowertoolsLogger#appendKey(String, String)}</p>
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PowerToolsLogging {
public @interface PowertoolsLogging {

boolean logEvent() default false;
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,29 @@
*/
package software.amazon.lambda.powertools.logging.internal;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Map;
import java.util.Optional;

import com.amazonaws.services.lambda.runtime.Context;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.util.IOUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import software.amazon.lambda.powertools.logging.PowerToolsLogging;
import software.amazon.lambda.powertools.logging.PowertoolsLogging;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Map;
import java.util.Optional;

import static java.util.Optional.empty;
import static java.util.Optional.of;
Expand All @@ -46,15 +49,24 @@
@Aspect
public final class LambdaLoggingAspect {
private static final ObjectMapper mapper = new ObjectMapper();
private static final String LOG_LEVEL = System.getenv("LOG_LEVEL");

static {
if (LOG_LEVEL != null) {
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configurator.setAllLevels(LogManager.getRootLogger().getName(), Level.getLevel(LOG_LEVEL));
ctx.updateLoggers();
}
}

@SuppressWarnings({"EmptyMethod", "unused"})
@Pointcut("@annotation(powerToolsLogging)")
public void callAt(PowerToolsLogging powerToolsLogging) {
@Pointcut("@annotation(powertoolsLogging)")
public void callAt(PowertoolsLogging powertoolsLogging) {
}

@Around(value = "callAt(powerToolsLogging) && execution(@PowerToolsLogging * *.*(..))", argNames = "pjp,powerToolsLogging")
@Around(value = "callAt(powertoolsLogging) && execution(@PowertoolsLogging * *.*(..))", argNames = "pjp,powertoolsLogging")
public Object around(ProceedingJoinPoint pjp,
PowerToolsLogging powerToolsLogging) throws Throwable {
PowertoolsLogging powertoolsLogging) throws Throwable {
Object[] proceedArgs = pjp.getArgs();

extractContext(pjp)
Expand All @@ -65,7 +77,7 @@ public Object around(ProceedingJoinPoint pjp,
});


if (powerToolsLogging.logEvent()) {
if (powertoolsLogging.logEvent()) {
proceedArgs = logEvent(pjp);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import static org.assertj.core.api.Assertions.assertThat;


class PowerLoggerTest {
class PowertoolsLoggerTest {

@BeforeEach
void setUp() {
Expand All @@ -29,7 +29,7 @@ void setUp() {

@Test
void shouldSetCustomKeyOnThreadContext() {
PowerLogger.appendKey("test", "value");
PowertoolsLogger.appendKey("test", "value");

assertThat(ThreadContext.getImmutableContext())
.hasSize(1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,19 @@
import com.amazonaws.services.lambda.runtime.RequestHandler;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import software.amazon.lambda.powertools.logging.PowerToolsLogging;
import software.amazon.lambda.powertools.logging.PowertoolsLogging;

public class PowerLogToolEnabled implements RequestHandler<Object, Object> {
private final Logger LOG = LogManager.getLogger(PowerToolLogEventEnabled.class);

@Override
@PowerToolsLogging
@PowertoolsLogging
public Object handleRequest(Object input, Context context) {
LOG.info("Test event");
return null;
}

@PowerToolsLogging
@PowertoolsLogging
public void anotherMethod() {
System.out.println("test");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,16 @@
*/
package software.amazon.lambda.powertools.logging.handlers;

import java.io.InputStream;
import java.io.OutputStream;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import software.amazon.lambda.powertools.logging.PowerToolsLogging;
import software.amazon.lambda.powertools.logging.PowertoolsLogging;

import java.io.InputStream;
import java.io.OutputStream;

public class PowerLogToolEnabledForStream implements RequestStreamHandler {

@PowerToolsLogging
@PowertoolsLogging
@Override
public void handleRequest(InputStream input, OutputStream output, Context context) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import software.amazon.lambda.powertools.logging.PowerToolsLogging;
import software.amazon.lambda.powertools.logging.PowertoolsLogging;

public class PowerToolLogEventEnabled implements RequestHandler<Object, Object> {

@PowerToolsLogging(logEvent = true)
@PowertoolsLogging(logEvent = true)
@Override
public Object handleRequest(Object input, Context context) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@
*/
package software.amazon.lambda.powertools.logging.handlers;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import com.fasterxml.jackson.databind.ObjectMapper;
import software.amazon.lambda.powertools.logging.PowertoolsLogging;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import com.fasterxml.jackson.databind.ObjectMapper;
import software.amazon.lambda.powertools.logging.PowerToolsLogging;

public class PowerToolLogEventEnabledForStream implements RequestStreamHandler {

@PowerToolsLogging(logEvent = true)
@PowertoolsLogging(logEvent = true)
@Override
public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
ObjectMapper mapper = new ObjectMapper();
Expand Down