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 = ;var errorHandler = ; const app = ; // define routes app; app; // 💪 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:
errstatusCode <- 500 -
#### err.message Type:
string
The message that wes passed to the thrown error:
errmessage <- 'id 15 was not found' -
#### err.stack Type:
string
The full stackTrace generated by the error:
errstack <- 'Error: Forbiddenat 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; // the status-code itselfvar err = 'User not found';errstatus = 404; throw err; // -> will result a res.status(404) // the error titlevar err = 'Internal Server Error'; throw err; // -> will result a res.status(500)
*Check out http-errors for error creation
- Unspecified:
var err = 'User not found';errstatus = 404; // -> will result a default res.status(500)
Message
res.message
will always contain the status code's official description:
// -> 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