File size: 1,264 Bytes
a966957 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import * as Sentry from '@sentry/react';
let sentryReady = false;
export function initLogger() {
const dsn = import.meta.env.VITE_SENTRY_DSN as string | undefined;
if (!dsn) return;
Sentry.init({
dsn,
environment: import.meta.env.MODE,
tracesSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
});
sentryReady = true;
}
export function logError(messageOrErr: unknown, err?: unknown) {
console.error(messageOrErr, err ?? '');
if (sentryReady) {
const captured = messageOrErr instanceof Error ? messageOrErr
: err instanceof Error ? err
: new Error(typeof messageOrErr === 'string' ? messageOrErr : 'Unknown error');
Sentry.withScope(scope => {
if (err && !(err instanceof Error)) scope.setExtra('details', String(err));
Sentry.captureException(captured);
});
}
}
export function logWarn(message: unknown, err?: unknown) {
console.warn(message, err ?? '');
if (sentryReady) {
const msg = typeof message === 'string' ? message : String(message);
Sentry.withScope(scope => {
if (err) scope.setExtra('details', String(err));
Sentry.captureMessage(msg, 'warning');
});
}
}
|