public Object around()

in powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspect.java [85:117]


    public Object around(ProceedingJoinPoint pjp,
                         Logging logging) throws Throwable {
        Object[] proceedArgs = pjp.getArgs();

        setLogLevelBasedOnSamplingRate(pjp, logging);

        Context extractedContext = extractContext(pjp);

        if(null != extractedContext) {
            appendKeys(DefaultLambdaFields.values(extractedContext));
            appendKey("coldStart", isColdStart() ? "true" : "false");
            appendKey("service", serviceName());
        }

        getXrayTraceId().ifPresent(xRayTraceId -> appendKey("xray_trace_id", xRayTraceId));

        if (logging.logEvent()) {
            proceedArgs = logEvent(pjp);
        }

        if (!logging.correlationIdPath().isEmpty()) {
            proceedArgs = captureCorrelationId(logging.correlationIdPath(), pjp);
        }

        Object proceed = pjp.proceed(proceedArgs);

        if(logging.clearState()) {
            ThreadContext.clearMap();
        }

        coldStartDone();
        return proceed;
    }