Configuration

To get started, you need to configure Raven to use your Sentry DSN:

Copied
var Raven = require("raven");
Raven.config("https://examplePublicKey@o0.ingest.sentry.io/0").install();

At this point, Raven is ready to capture any uncaught exceptions.

Note that the install method can optionally take a callback function that is invoked if a fatal, non-recoverable error occurs. You can use this callback to perform any cleanup that should occur before the Node process exits.

Copied
Raven.config("https://examplePublicKey@o0.ingest.sentry.io/0").install(function (err, initialErr, eventId) {
  console.error(err);
  process.exit(1);
});

Raven.config() can optionally be passed an additional argument for extra configuration:

Copied
Raven.config("https://examplePublicKey@o0.ingest.sentry.io/0", {
  release: "1.3.0",
}).install();

Those configuration options are documented below:

logger

The name of the logger used by Sentry.

Copied
{
  logger: "default";
}

name

Set the server name for the client to use. Default: require('os').hostname() Optionally, use SENTRY_NAME environment variable.

Copied
{
  name: "primary";
}

release

Track the version of your application in Sentry. Optionally, use SENTRY_RELEASE environment variable.

Copied
{
  release: "721e41770371db95eee98ca2707686226b993eda";
}

This is usually a Git SHA hash, which can be obtained using various npm packages, e.g.

Copied
var git = require("git-rev-sync");

{
  // this will return 40 characters long hash
  // eg. '75bf4eea9aa1a7fd6505d0d0aa43105feafa92ef'
  release: git.long();
}

environment

Track the environment name inside Sentry. Optionally, use SENTRY_ENVIRONMENT environment variable.

Copied
{
  environment: "staging";
}

tags

Additional tags to assign to each event.

Copied
{
  tags: {
    git_commit: "c0deb10c4";
  }
}

extra

Arbitrary data to associate with the event.

Copied
{
  extra: {
    planet: {
      name: "Earth";
    }
  }
}

parseUser

Controls how Raven tries to parse user context when parsing a request object.

An array of strings determines the fields to grab from req.user. true will collect all keys from req.user. false will collect nothing.

Defaults to ['id', 'username', 'email'].

Alternatively, a function can be provided for fully custom parsing:

Copied
{
    parseUser: function (req) {
        // custom user parsing logic
        return {
            username: req.specialUserField.username,
            id: req.specialUserField.getId()
        };
    }
}

sampleRate

A sampling rate to apply to events. A value of 0.0 will send no events, and a value of 1.0 will send all events (default).

Copied
{
  sampleRate: 0.5; // send 50% of events, drop the other half
}

sendTimeout

The time to wait to connect to the server or receive a response when capturing an exception, in seconds.

If it takes longer, the transport considers it a failed request and will pass back a timeout error.

Defaults to 1 second. Make it longer if you run into timeout problems when sending exceptions to Sentry.

Copied
{
  sendTimeout: 5; // wait 5 seconds before considering the capture to have failed
}

dataCallback

A function that allows mutation of the data payload right before being sent to Sentry.

Copied
{
    dataCallback: function(data) {
        // add a user context
        data.user = {
            id: 1337,
            name: 'janedoe',
            email: 'janedoe@example.com'
        };
        return data;
    }
}

shouldSendCallback

A callback function that allows you to apply your own filters to determine if the event should be sent to Sentry.

Copied
{
    shouldSendCallback: function (data) {
        // randomly omit half of events
        return Math.random() > 0.5;
    }
}

autoBreadcrumbs

Enables/disables automatic collection of breadcrumbs. Possible values are:

  • false - all automatic breadcrumb collection disabled (default)
  • true - all automatic breadcrumb collection enabled
  • A dictionary of individual breadcrumb types that can be enabled/disabled:
Copied
autoBreadcrumbs: {
    'console': false,  // console logging
    'http': true,     // http and https requests
}

maxBreadcrumbs

Raven captures up to 30 breadcrumb entries by default. You can increase this to be as high as 100, or reduce it if you find 30 is too noisy, by setting maxBreadcrumbs.

Note that in very high-concurrency situations where you might have a large number of long-lived contexts each with a large number of associated breadcrumbs, there is potential for significant memory usage. 10,000 contexts with 10kB of breadcrumb data each will use around 120mB of memory. Most applications will be nowhere close to either of these numbers, but if yours might be, you can use the maxBreadcrumbs parameter to limit the amount of breadcrumb data each context will keep around.

transport

Override the default HTTP data transport handler.

Copied
{
    transport: function (options) {
        // send data
    }
}

Please see the raven-node source code to see how transports are implemented.

maxReqQueueCount

Controls how many requests can be maximally queued before bailing out and emitting an error. Defaults to 100.

stacktrace

Attach stack trace to captureMessage calls by generatic “synthetic” error object and extracting all frames.

SENTRY_DSN

Optionally declare the DSN to use for the client through the environment. Initializing the client in your app won’t require setting the DSN.

SENTRY_NAME

Optionally set the server name for the client to use.

SENTRY_RELEASE

Optionally set the application release version for the client to use, this is usually a Git SHA hash.

SENTRY_ENVIRONMENT

Optionally set the environment name, e.g. “staging”, “production”. Sentry will default to the value of NODE_ENV, if present.

Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").