@sentry/utils
Version:
Utilities for all Sentry JavaScript SDKs
91 lines (76 loc) • 2.43 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var global$1 = require('./global.js');
// TODO: Implement different loggers for different environments
var global = global$1.getGlobalObject();
/** Prefix for logging strings */
var PREFIX = 'Sentry Logger ';
var CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;
/**
* Temporarily disable sentry console instrumentations.
*
* @param callback The function to run against the original `console` messages
* @returns The results of the callback
*/
function consoleSandbox(callback) {
var global = global$1.getGlobalObject();
if (!('console' in global)) {
return callback();
}
var originalConsole = global.console ;
var wrappedLevels = {};
// Restore all wrapped console methods
CONSOLE_LEVELS.forEach(level => {
// TODO(v7): Remove this check as it's only needed for Node 6
var originalWrappedFunc =
originalConsole[level] && (originalConsole[level] ).__sentry_original__;
if (level in global.console && originalWrappedFunc) {
wrappedLevels[level] = originalConsole[level] ;
originalConsole[level] = originalWrappedFunc ;
}
});
try {
return callback();
} finally {
// Revert restoration to wrapped state
Object.keys(wrappedLevels).forEach(level => {
originalConsole[level] = wrappedLevels[level ];
});
}
}
function makeLogger() {
let enabled = false;
var logger = {
enable: () => {
enabled = true;
},
disable: () => {
enabled = false;
},
};
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {
CONSOLE_LEVELS.forEach(name => {
logger[name] = (...args) => {
if (enabled) {
consoleSandbox(() => {
global.console[name](`${PREFIX}[${name}]:`, ...args);
});
}
};
});
} else {
CONSOLE_LEVELS.forEach(name => {
logger[name] = () => undefined;
});
}
return logger ;
}
// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used
exports.logger = void 0;
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {
exports.logger = global$1.getGlobalSingleton('logger', makeLogger);
} else {
exports.logger = makeLogger();
}
exports.CONSOLE_LEVELS = CONSOLE_LEVELS;
exports.consoleSandbox = consoleSandbox;
//# sourceMappingURL=logger.js.map