diff --git a/src/instrumentation.ts b/src/instrumentation.ts new file mode 100644 index 00000000..2e2c44c7 --- /dev/null +++ b/src/instrumentation.ts @@ -0,0 +1,22 @@ +import type { Instrumentation } from "next"; + +export const onRequestError: Instrumentation.onRequestError = async ( + error, + request, + context, +) => { + if (process.env.NEXT_RUNTIME !== "nodejs") return; + + const { logServerError } = await import("@/lib/server-log"); + logServerError("next.request_failed", error, { + path: request.path.split("?", 1)[0] ?? request.path, + method: request.method, + routePath: context.routePath, + routeType: context.routeType, + renderSource: context.renderSource, + digest: + typeof error === "object" && error !== null && "digest" in error + ? String(error.digest) + : null, + }); +};