Refactor monitoring package and improve error handling

The monitoring package has been significantly refactored to improve the granularity of error capture. Code from the 'capture-exception.ts' files in different locations have been deleted and replaced by a more unified approach in the 'use-baselime.ts' and 'use-sentry.ts' hooks. The README documentation has also been updated to reflect these changes and provide additional information about error monitoring setup and usage.
This commit is contained in:
giancarlo
2024-04-22 15:24:01 +08:00
parent 3ce6c62425
commit b6d303f90e
37 changed files with 2362 additions and 2106 deletions

View File

@@ -3,7 +3,7 @@
Please set the following environment variable:
```
MONITORING_INSTRUMENTATION_PROVIDER=sentry
NEXT_PUBLIC_MONITORING_PROVIDER=sentry
NEXT_PUBLIC_SENTRY_DSN=your_dsn
```

View File

@@ -11,6 +11,8 @@
"prettier": "@kit/prettier-config",
"exports": {
".": "./src/index.ts",
"./server": "./src/server.ts",
"./client": "./src/client.ts",
"./instrumentation": "./src/instrumentation.ts",
"./config/client": "./src/config/sentry.client.config.ts",
"./config/server": "./src/config/sentry.server.config.ts",

View File

@@ -1,5 +0,0 @@
import * as Sentry from '@sentry/nextjs';
export function captureException(error: Error & { digest?: string }) {
return Sentry.captureException(error);
}

View File

@@ -0,0 +1 @@
export * from './hooks/use-sentry';

View File

@@ -0,0 +1,12 @@
import { useMemo } from 'react';
import { SentryServerMonitoringService } from '../services/sentry-server-monitoring.service';
/**
* @name useSentry
* @description Get the Sentry monitoring service. Sentry can be used in the browser and server - so we don't need to differentiate between the two.
* @returns {SentryServerMonitoringService}
*/
export function useSentry(): SentryServerMonitoringService {
return useMemo(() => new SentryServerMonitoringService(), []);
}

View File

@@ -1 +0,0 @@
export * from './capture-exception';

View File

@@ -0,0 +1 @@
export * from './services/sentry-server-monitoring.service';

View File

@@ -0,0 +1,18 @@
import * as Sentry from '@sentry/nextjs';
import { MonitoringService } from '../../../src/services/monitoring.service';
/**
* @class
* @implements {MonitoringService}
* ServerSentryMonitoringService is responsible for capturing exceptions and identifying users using the Sentry monitoring service.
*/
export class SentryServerMonitoringService implements MonitoringService {
captureException(error: Error | null) {
return Sentry.captureException(error);
}
identifyUser(user: Sentry.User) {
Sentry.setUser(user);
}
}