mirror of
https://github.com/rxliuli/apps.apple.com.git
synced 2025-11-09 23:00:32 +00:00
84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
import { getGlobalSingleton, GLOBAL_OBJ } from './worldwide.js';
|
|
|
|
/** Prefix for logging strings */
|
|
const PREFIX = 'Sentry Logger ';
|
|
|
|
const 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) {
|
|
if (!('console' in GLOBAL_OBJ)) {
|
|
return callback();
|
|
}
|
|
|
|
const originalConsole = GLOBAL_OBJ.console ;
|
|
const wrappedLevels = {};
|
|
|
|
// Restore all wrapped console methods
|
|
CONSOLE_LEVELS.forEach(level => {
|
|
// TODO(v7): Remove this check as it's only needed for Node 6
|
|
const originalWrappedFunc =
|
|
originalConsole[level] && (originalConsole[level] ).__sentry_original__;
|
|
if (level in originalConsole && 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;
|
|
const logger = {
|
|
enable: () => {
|
|
enabled = true;
|
|
},
|
|
disable: () => {
|
|
enabled = false;
|
|
},
|
|
};
|
|
|
|
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {
|
|
CONSOLE_LEVELS.forEach(name => {
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
logger[name] = (...args) => {
|
|
if (enabled) {
|
|
consoleSandbox(() => {
|
|
GLOBAL_OBJ.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
|
|
let logger;
|
|
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {
|
|
logger = getGlobalSingleton('logger', makeLogger);
|
|
} else {
|
|
logger = makeLogger();
|
|
}
|
|
|
|
export { CONSOLE_LEVELS, consoleSandbox, logger };
|
|
//# sourceMappingURL=logger.js.map
|