Blyp Docs

Next.js App Router

Import from @blyp/core/nextjs.

import { createLogger } from "@blyp/core/nextjs";

const nextLogger = createLogger({
  level: "info",
});

export const GET = nextLogger.withLogger(async (_request, _context, { log }) => {
  log.info("next-route");
  return Response.json({ ok: true });
});

Client ingestion route

Mount clientLogHandler on the same path configured for client logging.

// app/inngest/route.ts
import { createLogger } from "@blyp/core/nextjs";

const nextLogger = createLogger();

export const POST = nextLogger.clientLogHandler;

If you mount the handler on a path that does not match the configured ingestion path, Blyp returns a 500 mismatch response.

What auto-logged requests look like

With automatic request logging enabled, Blyp emits terminal output like:

[INFO]  GET  /health        200  2ms
[INFO]  POST /checkout      200  143ms
[INFO]  GET  /users/42      404  8ms
[ERROR] POST /payments      500  1203ms

Fields included automatically: method, path, status code, and duration.

In production (NDJSON):

{"level":"info","time":1710000000000,"msg":"GET /health","type":"http_request","method":"GET","url":"/health","statusCode":200,"responseTime":2}
{"level":"info","time":1710000000001,"msg":"POST /checkout","type":"http_request","method":"POST","url":"/checkout","statusCode":200,"responseTime":143}

Relevant types

import type {
  NextJsLoggerConfig,
  NextJsLoggerFactory,
  NextJsHandlerWithLogger,
  NextJsRouteContext,
} from "@blyp/core/nextjs";