1- import type { WrappedFunction } from '@sentry/types' ;
2-
3- import { getGlobalSingleton , GLOBAL_OBJ } from './worldwide' ;
1+ import { originalConsoleMethods } from './instrument' ;
2+ import { GLOBAL_OBJ } from './worldwide' ;
43
54/** Prefix for logging strings */
65const PREFIX = 'Sentry Logger ' ;
@@ -9,7 +8,7 @@ export const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert'
98export type ConsoleLevel = ( typeof CONSOLE_LEVELS ) [ number ] ;
109
1110type LoggerMethod = ( ...args : unknown [ ] ) => void ;
12- type LoggerConsoleMethods = Record < ( typeof CONSOLE_LEVELS ) [ number ] , LoggerMethod > ;
11+ type LoggerConsoleMethods = Record < ConsoleLevel , LoggerMethod > ;
1312
1413/** JSDoc */
1514interface Logger extends LoggerConsoleMethods {
@@ -28,26 +27,24 @@ export function consoleSandbox<T>(callback: () => T): T {
2827 return callback ( ) ;
2928 }
3029
31- const originalConsole = GLOBAL_OBJ . console as Console & Record < string , unknown > ;
32- const wrappedLevels : Partial < LoggerConsoleMethods > = { } ;
30+ const console = GLOBAL_OBJ . console as Console ;
31+ const wrappedFuncs : Partial < LoggerConsoleMethods > = { } ;
32+
33+ const wrappedLevels = Object . keys ( originalConsoleMethods ) as ConsoleLevel [ ] ;
3334
3435 // Restore all wrapped console methods
35- CONSOLE_LEVELS . forEach ( level => {
36- // TODO(v7): Remove this check as it's only needed for Node 6
37- const originalWrappedFunc =
38- originalConsole [ level ] && ( originalConsole [ level ] as WrappedFunction ) . __sentry_original__ ;
39- if ( level in originalConsole && originalWrappedFunc ) {
40- wrappedLevels [ level ] = originalConsole [ level ] as LoggerConsoleMethods [ typeof level ] ;
41- originalConsole [ level ] = originalWrappedFunc as Console [ typeof level ] ;
42- }
36+ wrappedLevels . forEach ( level => {
37+ const originalConsoleMethod = originalConsoleMethods [ level ] as LoggerMethod ;
38+ wrappedFuncs [ level ] = console [ level ] as LoggerMethod | undefined ;
39+ console [ level ] = originalConsoleMethod ;
4340 } ) ;
4441
4542 try {
4643 return callback ( ) ;
4744 } finally {
4845 // Revert restoration to wrapped state
49- Object . keys ( wrappedLevels ) . forEach ( level => {
50- originalConsole [ level ] = wrappedLevels [ level as ( typeof CONSOLE_LEVELS ) [ number ] ] ;
46+ wrappedLevels . forEach ( level => {
47+ console [ level ] = wrappedFuncs [ level ] as LoggerMethod ;
5148 } ) ;
5249 }
5350}
@@ -83,12 +80,4 @@ function makeLogger(): Logger {
8380 return logger as Logger ;
8481}
8582
86- // Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used
87- let logger : Logger ;
88- if ( __DEBUG_BUILD__ ) {
89- logger = getGlobalSingleton ( 'logger' , makeLogger ) ;
90- } else {
91- logger = makeLogger ( ) ;
92- }
93-
94- export { logger } ;
83+ export const logger = makeLogger ( ) ;
0 commit comments