protofolio / backend /src /middleware /errorHandler.ts
moustafa7's picture
Production-ready: Security hardening, RBAC, logging, audit, DB indexes, compression
9f5a703
Raw History Blame Contribute Delete
827 Bytes
import { Request, Response, NextFunction } from "express";
import { AppError } from "../utils/AppError";
import { createChildLogger } from "../config/logger";
const log = createChildLogger({ module: "error" });
export const errorHandler = (err: Error, req: Request, res: Response, _next: NextFunction) => {
if (err instanceof AppError) {
log.warn(`${err.message}`, { statusCode: err.statusCode, url: req.originalUrl });
return res.status(err.statusCode).json({
success: false,
message: err.message,
});
}
log.error("Unhandled error", {
message: err.message,
stack: err.stack,
url: req.originalUrl,
method: req.method,
});
return res.status(500).json({
success: false,
message: process.env.NODE_ENV === "production" ? "Internal Server Error" : err.message,
});
};