express-error-log-handler

1.0.0 • Public • Published

express-error-log-handler

Build Status Coverage Status

Express middleware-like error handler that takes care of your response status codes and messages.

Error

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 ~ 599

    The 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

Dependencies (2)

Dev Dependencies (17)

Package Sidebar

Install

npm i express-error-log-handler

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

18.7 kB

Total Files

16

Last publish

Collaborators

  • mikechatsky