mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-04-27 06:18:27 -04:00
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import * as Sentry from "@sentry/node";
|
|
import "@sentry/tracing";
|
|
|
|
const IsomorphicSentry = () => {
|
|
// https://docs.sentry.io/platforms/node/configuration/options/
|
|
Sentry.init({
|
|
dsn: process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN || "",
|
|
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || process.env.NEXT_PUBLIC_VERCEL_ENV || "",
|
|
tracesSampleRate: 1.0,
|
|
});
|
|
|
|
return Sentry;
|
|
};
|
|
|
|
export const logServerError = async (error: string | Error) => {
|
|
try {
|
|
const sentryInstance = IsomorphicSentry();
|
|
|
|
// log error to sentry
|
|
sentryInstance.captureException(error);
|
|
|
|
// give it 2 seconds to finish sending:
|
|
// https://docs.sentry.io/platforms/node/configuration/draining/
|
|
await sentryInstance.flush(2000);
|
|
} catch (sentryError) {
|
|
// cue inception bong
|
|
console.error("Encountered an error logging an error... We are doomed.", sentryError);
|
|
}
|
|
|
|
// also log the error normally to the Vercel console; will get picked up by log drain
|
|
console.error(error);
|
|
|
|
// we really don't want to return *any* error from logging an error, so just keep it on the dl
|
|
return true;
|
|
};
|
|
|
|
export default IsomorphicSentry;
|