From 690149d5558a44477f730d92850ddc9b4a14fefb Mon Sep 17 00:00:00 2001 From: Dotta Date: Thu, 5 Mar 2026 13:28:26 -0600 Subject: [PATCH] Fix 500 error logging to show actual error instead of generic message pino-http checks res.err before falling back to its generic "failed with status code 500" error. Set res.err to the real error in the error handler so logs include the actual message and stack trace. Co-Authored-By: Claude Opus 4.6 --- server/src/middleware/error-handler.ts | 9 +++++++-- server/src/middleware/logger.ts | 6 +----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/server/src/middleware/error-handler.ts b/server/src/middleware/error-handler.ts index e9d6c5a8..b8986c6b 100644 --- a/server/src/middleware/error-handler.ts +++ b/server/src/middleware/error-handler.ts @@ -10,6 +10,9 @@ export function errorHandler( _next: NextFunction, ) { if (err instanceof HttpError) { + if (err.status >= 500) { + (res as any).err = err; + } res.status(err.status).json({ error: err.message, ...(err.details ? { details: err.details } : {}), @@ -26,8 +29,10 @@ export function errorHandler( ? { message: err.message, stack: err.stack, name: err.name } : { raw: err }; - // Attach the real error so pino-http can include it in its response log - res.locals.serverError = errObj; + // Attach the real error so pino-http uses it instead of its generic + // "failed with status code 500" message in the response-complete log + const realError = err instanceof Error ? err : Object.assign(new Error(String(err)), { raw: err }); + (res as any).err = realError; logger.error( { err: errObj, method: req.method, url: req.originalUrl }, diff --git a/server/src/middleware/logger.ts b/server/src/middleware/logger.ts index 8f915b85..2f7da6dd 100644 --- a/server/src/middleware/logger.ts +++ b/server/src/middleware/logger.ts @@ -55,11 +55,7 @@ export const httpLogger = pinoHttp({ customErrorMessage(req, res) { return `${req.method} ${req.url} ${res.statusCode}`; }, - customProps(_req, res) { - const serverError = (res as any).locals?.serverError; - if (serverError) { - return { serverError }; - } + customProps() { return {}; }, });