Fix crash handling and log noise in logging feature

Review of the logging work from the previous commit turned up a real
correctness issue: the uncaughtException/unhandledRejection handlers
logged the error but let the process keep running, which silently
disabled Node's default crash-on-fatal-error behavior and could leave
a zombie process serving broken requests instead of restarting. Both
processes now log and then exit(1); restart: unless-stopped is added
to both services so Docker actually brings them back up.

Also: harden the logger against JSON.stringify throwing on
non-serializable meta, log aborted (closed-before-finished) requests
in the API access log, and stop the Next.js proxy from logging the
Docker healthcheck's request to "/" every few seconds so real
navigation events aren't drowned out.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Julian Appel 2026-08-06 19:58:31 +02:00
parent ea3c02cd6b
commit fa96be2d42
6 changed files with 49 additions and 15 deletions

View file

@ -7,11 +7,13 @@ export function registerNodeInstrumentation() {
logger.info("web server starting", { pid: process.pid });
process.on("uncaughtException", (error) => {
logger.error("uncaught exception", toErrorMeta(error));
logger.error("uncaught exception, exiting", toErrorMeta(error));
process.exit(1);
});
process.on("unhandledRejection", (reason) => {
logger.error("unhandled rejection", toErrorMeta(reason));
logger.error("unhandled rejection, exiting", toErrorMeta(reason));
process.exit(1);
});
setInterval(() => {