🍺 A logging handler for NodeJS that opens GitLab issues on provided exception.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
.travis.yml
Gruntfile.js
LICENSE
README.md
gitlab-logging.js
package.json

README.md

node-gitlab-logging

Build Status Gitter

node-gitlab-logging is a custom log handler that has been written with the purpose of auto-opening (and assigning) issues on GitLab everytime something goes south with NodeJS code.

Useful for production deployments, where you want to track the issues directly from GitLab, not from a dark server log file.

node-gitlab-logging is smart enough to recognize similar errors, thus not opening blindly a new issue everytime.

Setup

  • Add gitlab-logging to your package.json dependencies.

  • Then, require and configure the module using the code below:

gitlab_logging = require('gitlab-logging');

/* GitLab options */
gitlab_logging.configure({
    // Required
    host: 'https://gitlab.server.tld',
    user: 'gitlab.user',
    token: 'USER_GITLAB_TOKEN',         // Get this from GitLab user account information
    project_id: 114,                    // Get the project ID from the DB
    assignee_id: 2,                     // Get the assignee ID from the DB (optional, you can drop this parameter)

    // Optional
    environment: 'production'           // The NodeJS environment in use, useful when you pre-process the NODE_ENV value
});
  • Then, when you need to handle an error, just call:
// Boom, the error variable value will be redirected to your GitLab issues tracker!
gitlab_logging.handle(error);
  • If you need to catch all unhandled errors (which is recommended!), use the following code:
process.on('uncaughtException', function(error) {
    var error_message = error.stack || error;

    // Log to console
    console.error('uncaughtException', error_message);

    // Pipe error to GitLab
    gitlab.handle(error_message, function() {
        // Recommended: kill the NodeJS process (restart a clean one via forever)
        // The process is killed after the issue gets opened (respectfully of network delays)
        process.exit(1);
    });
});
  • Enjoy!

Notes

  • This module is kept up-to-date with latest GitLab API changes. Thus, ensure you're running the latest GitLab version in time when using node-gitlab-logging!

  • node-gitlab-logging has been built by the happy folks at Waaave Network, for their website needs.