41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import * as Sentry from '@sentry/node';
|
|
import { ProfilingIntegration } from '@sentry/profiling-node';
|
|
|
|
import {
|
|
ExceptionHandlerDriverInterface,
|
|
ExceptionHandlerSentryDriverFactoryOptions,
|
|
} from 'src/integrations/exception-handler/interfaces';
|
|
|
|
export class ExceptionHandlerSentryDriver
|
|
implements ExceptionHandlerDriverInterface
|
|
{
|
|
constructor(options: ExceptionHandlerSentryDriverFactoryOptions['options']) {
|
|
Sentry.init({
|
|
dsn: options.dsn,
|
|
integrations: [
|
|
// enable HTTP calls tracing
|
|
new Sentry.Integrations.Http({ tracing: true }),
|
|
// enable Express.js middleware tracing
|
|
new Sentry.Integrations.Express({ app: options.serverInstance }),
|
|
new Sentry.Integrations.GraphQL(),
|
|
new Sentry.Integrations.Postgres({
|
|
usePgNative: true,
|
|
}),
|
|
new ProfilingIntegration(),
|
|
],
|
|
tracesSampleRate: 1.0,
|
|
profilesSampleRate: 1.0,
|
|
environment: options.debug ? 'development' : 'production',
|
|
debug: options.debug,
|
|
});
|
|
}
|
|
|
|
captureException(exception: Error) {
|
|
Sentry.captureException(exception);
|
|
}
|
|
|
|
captureMessage(message: string) {
|
|
Sentry.captureMessage(message);
|
|
}
|
|
}
|