express-error-log-handler
v1.0.0
Published
Express middleware-like error handler
Downloads
5
Maintainers
Readme
express-error-log-handler
Express middleware-like error handler that takes care of your response status codes and messages.
Getting Started
Installation
$ npm install --save express-error-log-handler
Usage
express-error-log-handler
works like any express middleware:
var express = require('express');
var errorHandler = require('express-error-log-handler');
const app = express();
// define routes
app.use(errorHandler(function(err) {
console.log(err);
}));
app.listen(port);
// 💪 Works with es modules as well
*Make sure you use()
the express-error-log-handler
after you define all the routes.
Logging
The handler receives a log
callback function which is called with the error details.
The callback function receives an object containing:
err.statusCode
Type:
number
| ranges 400 ~ 599The HTTP status code that was sent as a response. for example:
err.statusCode <- 500
err.message
Type:
string
The message that wes passed to the thrown error:
err.message <- 'id 15 was not found'
err.stack
Type:
string
The full stackTrace generated by the error:
err.stack <- 'Error: Forbidden at Object.test (...\express-error-log-handler\__tests__\status-code.test.js:50:13) at Object.asyncJestTest (...\express-error-log-handler\node_modules\install.js:102:37) at resolve (...\express-error-log-handler\node_modules\build\queueRunner.js:43:12) at new Promise (<anonymous>) at mapper (...\express-error-log-handler\node_modules\build\queueRunner.js:26:19) at promise.then (...\express-error-log-handler\node_modules\build\queueRunner.js:73:41)'
Response
The middleware creates a response for the client according to the HTTP standard.
status-code
Will be generated according to:
- Specified code:
// error constructor library - *recommended*
app.get(function (req, res, next) {
if (!req.auth) {
return next(createError(401)) // -> will result a res.status(401)
}
next()
});
// the status-code itself
var err = new Error('User not found');
err.status = 404;
throw err; // -> will result a res.status(404)
// the error title
var err = new Error('Internal Server Error');
throw err; // -> will result a res.status(500)
*Check out http-errors for error creation
- Unspecified:
var err = new Error('User not found');
err.status = 404; // -> will result a default res.status(500)
Message
res.message
will always contain the status code's official description:
next(createError(500, 'invalid secret {...}')) // -> res.message = 'Internal Server Error'
*while the log gets the "real" message
Production
The response is suitable for either non-production
(like development/test
) or production
environments:
- For
non-production
(process.env.NODE_ENV !== production
) :- Stack-trace will be included in the HTTP response.
- Error of any code will be logged (including
400~499
).
- For
production
(process.env.NODE_ENV === production
)- Stack-track will be excluded in the HTTP response.
- Only
500+
status codes will be logged.
*It is important to make sure process.env.NODE_ENV
is set accordingly.
Suggestions 🤝
feel free to suggest any improvement or notify of any issue