mirror of
https://github.com/Readarr/Readarr
synced 2025-12-11 10:54:45 +01:00
* Set sentry environment to be develop/nightly based on config file Also add details on sqlite version and database migration. The separate ReconfigureSentry class is required because ReconfigureLogging happens before the database has been resolved, so you can't access IMainDatabase there * Set environment to develop/nightly in frontend too
91 lines
1.9 KiB
JavaScript
91 lines
1.9 KiB
JavaScript
import _ from 'lodash';
|
|
import * as sentry from '@sentry/browser';
|
|
import parseUrl from 'Utilities/String/parseUrl';
|
|
|
|
function cleanseUrl(url) {
|
|
const properties = parseUrl(url);
|
|
|
|
return `${properties.pathname}${properties.search}`;
|
|
}
|
|
|
|
function cleanseData(data) {
|
|
const result = _.cloneDeep(data);
|
|
|
|
result.transaction = cleanseUrl(result.transaction);
|
|
|
|
if (result.exception) {
|
|
result.exception.values.forEach((exception) => {
|
|
const stacktrace = exception.stacktrace;
|
|
|
|
if (stacktrace) {
|
|
stacktrace.frames.forEach((frame) => {
|
|
frame.filename = cleanseUrl(frame.filename);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
result.request.url = cleanseUrl(result.request.url);
|
|
|
|
return result;
|
|
}
|
|
|
|
function identity(stuff) {
|
|
return stuff;
|
|
}
|
|
|
|
function createMiddleware() {
|
|
return (store) => (next) => (action) => {
|
|
try {
|
|
// Adds a breadcrumb for reporting later (if necessary).
|
|
sentry.addBreadcrumb({
|
|
category: 'redux',
|
|
message: action.type
|
|
});
|
|
|
|
return next(action);
|
|
} catch (err) {
|
|
console.error(`[sentry] Reporting error to Sentry: ${err}`);
|
|
|
|
// Send the report including breadcrumbs.
|
|
sentry.captureException(err, {
|
|
extra: {
|
|
action: identity(action),
|
|
state: identity(store.getState())
|
|
}
|
|
});
|
|
}
|
|
};
|
|
}
|
|
|
|
export default function createSentryMiddleware() {
|
|
const {
|
|
analytics,
|
|
branch,
|
|
version,
|
|
release,
|
|
isProduction
|
|
} = window.Lidarr;
|
|
|
|
if (!analytics) {
|
|
return;
|
|
}
|
|
|
|
const dsn = isProduction ? 'https://c3a5b33e08de4e18b7d0505e942dbc95@sentry.io/216290' :
|
|
'https://baede6f14da54cf48ff431479e400adf@sentry.io/1249427';
|
|
|
|
sentry.init({
|
|
dsn,
|
|
environment: branch,
|
|
release,
|
|
sendDefaultPii: true,
|
|
beforeSend: cleanseData
|
|
});
|
|
|
|
sentry.configureScope((scope) => {
|
|
scope.setTag('version', version);
|
|
scope.setTag('production', isProduction);
|
|
});
|
|
|
|
return createMiddleware();
|
|
}
|