File tree Expand file tree Collapse file tree 3 files changed +21
-4
lines changed Expand file tree Collapse file tree 3 files changed +21
-4
lines changed Original file line number Diff line number Diff line change @@ -25,9 +25,9 @@ var logForGivenLevel = function(level) {
2525 if ( originalConsoleLevel ) {
2626 // IE9 doesn't allow calling apply on console functions directly
2727 // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193
28- Function . prototype . bind
29- . call ( originalConsoleLevel , originalConsole )
30- . apply ( originalConsole , args ) ;
28+ Function . prototype . bind
29+ . call ( originalConsoleLevel , originalConsole )
30+ . apply ( originalConsole , args ) ;
3131 }
3232 } ;
3333} ;
@@ -39,5 +39,7 @@ while(level) {
3939}
4040// export
4141window . console = console ;
42+ // keep a reference to the original console so we don't recurse on ourselves
43+ window . _Raven_original_console = originalConsole ;
4244
4345} ( window , window . Raven , window . console || { } ) ) ;
Original file line number Diff line number Diff line change @@ -851,9 +851,13 @@ function uuid4() {
851851
852852function logDebug ( level ) {
853853 if ( window . console && console [ level ] && Raven . debug ) {
854+ // If `window._Raven_original_console exists, that means
855+ // we've already patched `console`. So we want to avoid recursion
856+ // and utilize the real, original one.
857+ var originalConsole = window . _Raven_original_console || console ;
854858 // _slice is coming from vendor/TraceKit/tracekit.js
855859 // so it's accessible globally
856- console [ level ] . apply ( console , _slice . call ( arguments , 1 ) ) ;
860+ originalConsole [ level ] . apply ( originalConsole , _slice . call ( arguments , 1 ) ) ;
857861 }
858862}
859863
Original file line number Diff line number Diff line change @@ -342,6 +342,17 @@ describe('globals', function() {
342342 this . sinon . stub ( console , level ) ;
343343 logDebug ( level , message , { } , 'foo' ) ;
344344 } ) ;
345+
346+ it ( 'should write to window._Raven_original_console when patched' , function ( ) {
347+ Raven . debug = true ;
348+ this . sinon . stub ( console ) ;
349+ window . _Raven_original_console = { 'error' : function ( ) { } } ;
350+ this . sinon . stub ( window . _Raven_original_console , level ) ;
351+ logDebug ( level , message ) ;
352+ assert . isTrue ( window . _Raven_original_console [ level ] . called ) ;
353+ assert . isFalse ( console [ level ] . called ) ;
354+ delete window . _Raven_original_console ;
355+ } ) ;
345356 } ) ;
346357
347358 describe ( 'setAuthQueryString' , function ( ) {
You can’t perform that action at this time.
0 commit comments