Adds a leveled JSON logger (error/warn/info/verbose/debug, controlled via LOG_LEVEL) wired into the Express API (access log, error middleware, crash handlers, memory heartbeat) and the Next.js server (page-request proxy, instrumentation crash handlers, heartbeat). LOG_LEVEL is exposed through compose.yaml, and both services now rotate their Docker logs (json-file, 20m x 10 files) instead of growing unbounded. Intended to capture long-running diagnostic data for the intermittent 502s seen on the Docker host. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
19 lines
477 B
TypeScript
19 lines
477 B
TypeScript
import type { NextFunction, Request, Response } from "express";
|
|
import { createLogger, toErrorMeta } from "../../shared/logging/logger.js";
|
|
|
|
const logger = createLogger("api");
|
|
|
|
export function errorMiddleware(
|
|
error: unknown,
|
|
req: Request,
|
|
res: Response,
|
|
_next: NextFunction
|
|
) {
|
|
logger.error("request handler threw", {
|
|
method: req.method,
|
|
path: req.originalUrl,
|
|
...toErrorMeta(error),
|
|
});
|
|
res.status(500).json({ error: "Internal Server Error" });
|
|
}
|
|
|