serverless
Version:
Serverless Framework - Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more
57 lines (45 loc) • 1.53 kB
JavaScript
'use strict';
const raven = require('raven');
const ci = require('ci-info');
const configUtils = require('./config');
const pkg = require('./../../package.json');
const readFileIfExists = require('./fs/readFileIfExists');
const getTrackingConfigFileName = require('./getTrackingConfigFileName');
const path = require('path');
const BbPromise = require('bluebird');
const SLS_DISABLE_ERROR_TRACKING = true;
const IS_CI = ci.isCI;
function initializeErrorReporter(invocationId) {
const trackingConfigFilePath = path.join(__dirname, '..', '..', getTrackingConfigFileName());
return readFileIfExists(trackingConfigFilePath).then(trackingConfig => {
const config = configUtils.getConfig();
const trackingDisabled = config.trackingDisabled;
// exit if tracking disabled or inside CI system
if (!trackingConfig || SLS_DISABLE_ERROR_TRACKING || trackingDisabled || IS_CI) {
return BbPromise.resolve();
}
const DSN = trackingConfig.sentryDSN;
// initialize Error tracking
raven.config(DSN, {
environment: 'production',
autoBreadcrumbs: true,
release: pkg.version,
extra: {
frameworkId: config.frameworkId,
invocationId,
},
});
if (config.userId) {
raven.setContext({
user: {
id: config.userId,
},
});
}
raven.disableConsoleAlerts();
raven.install();
return BbPromise.resolve();
});
}
module.exports.initializeErrorReporter = initializeErrorReporter;
module.exports.raven = raven;