2016-12-07 02:36:45 +05:30
|
|
|
import Raven from 'raven-js';
|
|
|
|
|
2017-03-29 11:16:20 +05:30
|
|
|
import abbreviate from './abbreviate';
|
|
|
|
|
2016-12-07 02:36:45 +05:30
|
|
|
const isTest = process.env.__TEST__; // eslint-disable-line
|
2017-03-01 11:14:11 +05:30
|
|
|
const isProduction = process.env.__PROD__; // eslint-disable-line
|
2016-12-07 02:36:45 +05:30
|
|
|
|
|
|
|
const logger = {
|
|
|
|
init({sentryCdn}) {
|
|
|
|
if (sentryCdn) {
|
|
|
|
Raven.config(sentryCdn, {
|
|
|
|
logger: 'accounts-js-app',
|
|
|
|
level: 'info',
|
2016-12-07 02:46:34 +05:30
|
|
|
environment: process.env.APP_ENV, // eslint-disable-line
|
2016-12-07 02:36:45 +05:30
|
|
|
release: process.env.__VERSION__, // eslint-disable-line
|
|
|
|
shouldSendCallback: () => !isTest,
|
|
|
|
dataCallback: (data) => {
|
|
|
|
if (!data.level) {
|
|
|
|
// log unhandled errors as info
|
|
|
|
data.level = 'info';
|
|
|
|
}
|
|
|
|
|
|
|
|
return data;
|
2017-03-01 11:14:11 +05:30
|
|
|
},
|
|
|
|
whitelistUrls: isProduction ? [
|
|
|
|
/ely\.by/
|
|
|
|
] : []
|
2016-12-07 02:36:45 +05:30
|
|
|
}).install();
|
|
|
|
|
2017-01-02 19:07:02 +05:30
|
|
|
window.addEventListener('unhandledrejection', (event) => {
|
|
|
|
const error = event.reason || {};
|
2017-01-02 19:09:34 +05:30
|
|
|
|
|
|
|
let message = error.message || error;
|
|
|
|
if (typeof message === 'string') {
|
|
|
|
message = `: ${message}`;
|
|
|
|
} else {
|
|
|
|
message = '';
|
|
|
|
}
|
2017-01-02 19:07:02 +05:30
|
|
|
|
|
|
|
logger.info(`Unhandled rejection${message}`, {
|
|
|
|
error
|
|
|
|
});
|
|
|
|
});
|
2016-12-07 02:36:45 +05:30
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
setUser(user) {
|
|
|
|
Raven.setUserContext({
|
|
|
|
username: user.username,
|
|
|
|
email: user.email,
|
|
|
|
id: user.id
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
[
|
|
|
|
// 'fatal',
|
|
|
|
'error',
|
|
|
|
'warning',
|
|
|
|
'info',
|
|
|
|
'debug'
|
|
|
|
].forEach((level) => {
|
2017-01-02 18:39:09 +05:30
|
|
|
const method = level === 'warning' ? 'warn' : level;
|
2016-12-07 02:36:45 +05:30
|
|
|
|
2017-01-02 18:39:09 +05:30
|
|
|
logger[method] = (message, context) => {
|
2016-12-07 02:36:45 +05:30
|
|
|
if (isTest) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2017-03-02 11:28:33 +05:30
|
|
|
if (typeof context !== 'object') {
|
|
|
|
// it would better to always have an object here
|
|
|
|
context = {
|
|
|
|
message: context
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2017-03-29 11:16:20 +05:30
|
|
|
context = abbreviate(context); // prepare data for JSON.stringify
|
|
|
|
|
2017-01-02 19:07:02 +05:30
|
|
|
console[method](message, context); // eslint-disable-line
|
2016-12-07 02:36:45 +05:30
|
|
|
|
|
|
|
Raven.captureException(message, {
|
|
|
|
level,
|
|
|
|
extra: context
|
2017-01-02 18:39:09 +05:30
|
|
|
});
|
2016-12-07 02:36:45 +05:30
|
|
|
};
|
|
|
|
});
|
|
|
|
|
|
|
|
export default logger;
|