Skip to content

A Fastify plugin for attaching Sentry to the framework

License

Notifications You must be signed in to change notification settings

gboston/fastify-sentry

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fastify Sentry Plugin using the Sentry SDK

NPM

CircleCI

Installation

npm i fastify-sentry -s

Usage

const fastify = require("fastify")();
// Should be first declaration
fastify.register(
  require("fastify-sentry"),
  {
    dsn: "https://[email protected]/0000000",
    environment: "local",
    errorHandler: (err, request, reply) => {
      // You can specify a custom behavior depending on the context of "request", generate a unique identifier etc.
      if (request.raw.url === "/") {
        reply.send({
          error: 500,
          message: 'The main path "/" didn\'t work!',
          payload: err
        });
      } else {
        reply.send({
          error: 501,
          message: "Some other path failed!",
          payload: err
        });
      }
    }
  },
  err => {
    if (err) throw err;
  }
);

fastify.get("/", async (request, reply) => {
  // Errors in async functions are automatically caught
  throw new Error("Oops");
  reply.send({ hello: "world" });
});

fastify.get("/other-path", (request, reply) => {
  // On the other hand, you need to pass the Error object to "reply.send" for it to be logged as Fastify does not catch errors in synchronous functions!
  reply.send(new Error("I did it again!"));
});

Description

This plugin adds the Sentry SDK error handler by using fastify.setErrorHandler. This means that the Sentry SDK will only catch any errors thrown in routes with async functions. In order to properly log errors thrown within synchronous functions, you need to pass the error object within reply.send. It also adds certain metadata, namely the path and the ip parameters of req.raw, to both the User context and Tag context of Sentry.

Options

Option Description
dsn Required, the DSN specified by Sentry.io to properly log errors to.

Author

Alex Papageorgiou

License

Licensed under GPLv3.

About

A Fastify plugin for attaching Sentry to the framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%