33 lines
872 B
JavaScript
33 lines
872 B
JavaScript
const logger = require('../utils/logger');
|
|
|
|
const errorLogger = (err, req, res, next) => {
|
|
// Create a request-specific logger with request ID
|
|
const reqLogger = logger.withRequestId(req.id);
|
|
|
|
// Log the error with context
|
|
const errorContext = {
|
|
method: req.method,
|
|
url: req.url,
|
|
userAgent: req.get('User-Agent'),
|
|
ip: req.ip,
|
|
userId: req.user?.id || 'anonymous',
|
|
body: logger.sanitize(req.body),
|
|
params: req.params,
|
|
query: req.query,
|
|
statusCode: err.statusCode || 500,
|
|
stack: err.stack,
|
|
};
|
|
|
|
if (err.statusCode && err.statusCode < 500) {
|
|
// Client errors (4xx)
|
|
reqLogger.warn(`Client error: ${err.message}`, errorContext);
|
|
} else {
|
|
// Server errors (5xx)
|
|
reqLogger.error(`Server error: ${err.message}`, errorContext);
|
|
}
|
|
|
|
// Pass error to next middleware
|
|
next(err);
|
|
};
|
|
|
|
module.exports = errorLogger; |