119 lines
3.4 KiB
Markdown
Raw Normal View History

2020-12-14 17:50:19 +01:00
# Strapi plugin Sentry
2020-12-14 00:59:12 +01:00
2020-12-14 17:50:19 +01:00
The official plugin to track Strapi errors with Sentry.
## Features
- Initialize a Sentry instance when your Strapi app starts
- Send errors encountered in your application's end API to Sentry
- Attach useful metadata to Sentry events, to help you with debugging
- Expose a global Sentry service
## Installation
To install this plugin, you need to add an NPM dependency to your Strapi application.
```sh
# Using Yarn
2022-02-03 12:52:21 +01:00
yarn add @strapi/plugin-sentry
# Or using NPM
2022-02-03 12:52:21 +01:00
npm install @strapi/plugin-sentry
```
2020-12-14 17:50:19 +01:00
## Configuration
| property | type (default) | description |
| -------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dsn` | string (`null`) | Your Sentry data source name ([see Sentry docs](https://docs.sentry.io/product/sentry-basics/dsn-explainer/)). |
| `sendMetadata` | boolean (`true`) | Whether the plugin should attach additional information (like OS, browser, etc.) to the events sent to Sentry. |
| `init` | object (`{}`) | A config object that is passed directly to Sentry during the `Sentry.init()`. See all available options [on Sentry's docs](https://docs.sentry.io/platforms/node/configuration/options/) |
2020-12-14 17:50:19 +01:00
**Example**
`./config/plugins.js`
```js
module.exports = ({ env }) => ({
// ...
sentry: {
2022-02-03 12:52:21 +01:00
enabled: true,
config: {
dsn: env('SENTRY_DSN'),
sendMetadata: true,
},
2020-12-14 17:50:19 +01:00
},
// ...
});
```
## Global Sentry service
You can access a Sentry service throughout your app.
```js
2021-08-19 22:27:00 +02:00
const sentryService = strapi.plugin('sentry').service('sentry');
2020-12-14 17:50:19 +01:00
```
This service exposes the following methods:
### `sendError(error, configureScope)`
Use it to manually send errors to Sentry. The `configureScope` is optional, it allows you to customize the error event. Read more about Sentry's scope system [on their docs](https://docs.sentry.io/platforms/node/enriching-events/scopes/#configuring-the-scope).
**Example**
```js
try {
// Your code here
} catch (error) {
// Either send a simple error
2021-08-19 22:27:00 +02:00
strapi
.plugin('sentry')
.service('sentry')
.sendError(error);
// Or send an error with a customized Sentry scope
2021-08-19 22:27:00 +02:00
strapi
.plugin('sentry')
.service('sentry')
.sendError(error, (scope, sentryInstance) => {
// Customize the scope here
scope.setTag('my_custom_tag', 'Tag value');
});
2020-12-14 17:50:19 +01:00
throw error;
}
```
2020-12-14 17:54:42 +01:00
### `getInstance()`
2020-12-14 17:50:19 +01:00
Use it if you need direct access to the Sentry instance, which should already already be initialized. It's useful if `sendError` doesn't suit your needs.
**Example**
```js
2021-08-19 22:27:00 +02:00
const sentryInstance = strapi
.plugin('sentry')
.service('sentry')
.getInstance();
2020-12-14 17:50:19 +01:00
```
2021-02-15 19:34:45 +01:00
## Disabling
2022-02-03 12:58:08 +01:00
This plugin can be disabled in the plugins configuration file. With the `env` utility, it is also possible to disable it depending on the environment.
2021-02-15 19:34:45 +01:00
**Example**
`./config/plugins.js`
```js
module.exports = ({ env }) => ({
// ...
sentry: {
2022-02-03 12:52:21 +01:00
// Only enable Sentry in production
enabled: env('NODE_ENV') === 'production',
2021-02-15 19:34:45 +01:00
},
// ...
});
```