Guides / Platforms & Tools

How to Log Events from AWS Lambda Functions

3 min readยทPlatforms & Tools

Node.js Lambda

Install the SDK as a Lambda Layer or bundle it with your function:

bash
npm install logit
ts
// handler.ts
import { init } from "logit";

const logit = init({ token: process.env.LOGIT_API_KEY! });

export const handler = async (event: AWSLambda.APIGatewayEvent) => {
  const start = Date.now();

  try {
    // your business logic
    const result = await processOrder(event.body);

    await logit.now("orders", {
      event: "Order processed",
      description: `Order ${result.orderId} completed`,
      icon: "๐Ÿ“ฆ",
      notify: true,
      metadata: {
        orderId: result.orderId,
        durationMs: Date.now() - start,
        region: process.env.AWS_REGION ?? "unknown",
      },
    });

    return { statusCode: 200, body: JSON.stringify(result) };
  } catch (error) {
    await logit.now("errors", {
      event: "Lambda error",
      description: error instanceof Error ? error.message : "Unknown error",
      icon: "โŒ",
      notify: true,
      metadata: {
        functionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
        error: error instanceof Error ? error.message : String(error),
      },
    });
    return { statusCode: 500, body: JSON.stringify({ error: "Internal error" }) };
  }
};

Scheduled Lambda (EventBridge rule)

ts
// cron-handler.ts
export const handler = async () => {
  const start = Date.now();
  await logit.now("cron", {
    event: "Lambda cron started",
    description: `${process.env.AWS_LAMBDA_FUNCTION_NAME} fired`,
    icon: "โฐ",
    notify: false,
    metadata: { functionName: process.env.AWS_LAMBDA_FUNCTION_NAME, region: process.env.AWS_REGION },
  });

  try {
    await runDailyJob();
    await logit.now("cron", {
      event: "Lambda cron completed",
      description: "Finished in " + (Date.now() - start) + "ms",
      icon: "โœ…",
      notify: false,
      metadata: { durationMs: Date.now() - start },
    });
  } catch (error) {
    await logit.now("cron", {
      event: "Lambda cron failed",
      description: error instanceof Error ? error.message : "Unknown",
      icon: "๐Ÿšจ",
      notify: true,
      metadata: { error: error instanceof Error ? error.message : String(error) },
    });
    throw error;
  }
};

Environment Variables

bash
# In AWS Lambda console or SAM template
LOGIT_API_KEY=lk_live_xxxxxxxxxxxxxxxx

SAM template

yaml
Environment:
  Variables:
    LOGIT_API_KEY: !Sub '{{resolve:secretsmanager:logit-api-key}}'

Try LogIt free

7-day trial. No credit card required.

Start free