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

@@ -4,5 +4,5 @@ Please set the following environment variables:
```
BASELIME_KEY=your_key
MONITORING_INSTRUMENTATION_PROVIDER=baselime
NEXT_PUBLIC_MONITORING_PROVIDER=baselime
```

View File

@@ -10,7 +10,8 @@
},
"prettier": "@kit/prettier-config",
"exports": {
".": "./src/index.ts",
"./server": "./src/server.ts",
"./client": "./src/client.ts",
"./instrumentation": "./src/instrumentation.ts",
"./provider": "./src/components/provider.tsx"
},

View File

@@ -1,4 +0,0 @@
export function captureException(error: Error) {
console.info(`No yet defined...`);
return console.error(`Caught exception: ${JSON.stringify(error)}`);
}

View File

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

View File

@@ -0,0 +1,20 @@
import { useBaselimeRum } from '@baselime/react-rum';
import { MonitoringService } from '../../../src/services/monitoring.service';
/**
* @name useBaselime
* @description Get the Baselime monitoring service for the browser.
*/
export function useBaselime(): MonitoringService {
const { captureException, setUser } = useBaselimeRum();
return {
captureException(error: Error, extra?: React.ErrorInfo | undefined) {
void captureException(error, extra);
},
identifyUser(params) {
setUser(params.id);
},
} satisfies MonitoringService;
}

View File

@@ -1,12 +0,0 @@
import { useCallback } from 'react';
import { useBaselimeRum } from '@baselime/react-rum';
export function useCaptureException() {
const { captureException } = useBaselimeRum();
return useCallback(
(error: Error) => captureException(error),
[captureException],
);
}

View File

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

View File

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

View File

@@ -0,0 +1,9 @@
import { MonitoringService } from '../../../src/services/monitoring.service';
export class BaselimeServerMonitoringService implements MonitoringService {
captureException(error: Error | null) {
console.error(`Caught exception: ${JSON.stringify(error)}`);
}
identifyUser<Info extends { id: string }>(info: Info) {}
}