morpress.js
Version:
A simple API framework without dependencies
43 lines (35 loc) • 1.12 kB
JavaScript
// src/errorHandler.js
const fs = require('fs');
const path = require('path');
class ErrorHandler {
constructor(logFilePath = path.join(__dirname, 'errors.log')) {
this.logFilePath = logFilePath;
}
handle(err, req, res) {
this.logError(err, req);
const statusCode = this.getStatusCode(err);
res.statusCode = statusCode;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({
error: this.getErrorType(err),
message: err.message
}));
}
logError(err, req) {
const logMessage = `
[${new Date().toISOString()}] ${req.method} ${req.url}
Error: ${err.message}
Stack: ${err.stack}
`;
fs.appendFile(this.logFilePath, logMessage + '\n', (fileErr) => {
if (fileErr) console.error('Failed to write to log file:', fileErr);
});
}
getStatusCode(err) {
return err.statusCode || 500;
}
getErrorType(err) {
return err.name || 'Internal Server Error';
}
}
module.exports = new ErrorHandler();