1- /*! Raven.js 3.0.0 (6adaa62 ) | github.com/getsentry/raven-js */
1+ /*! Raven.js 3.0.1 (996e09a ) | github.com/getsentry/raven-js */
22
33/*
44 * Includes TraceKit
2424 */
2525'use strict' ;
2626
27+ var wrapConsoleMethod = _dereq_ ( 2 ) . wrapMethod ;
28+
2729function consolePlugin ( Raven , console , pluginOptions ) {
2830 console = console || window . console || { } ;
2931 pluginOptions = pluginOptions || { } ;
3032
31- var originalConsole = console ,
32- logLevels = pluginOptions . levels || [ 'debug' , 'info' , 'warn' , 'error' ] ,
33+ var logLevels = pluginOptions . levels || [ 'debug' , 'info' , 'warn' , 'error' ] ,
3334 level = logLevels . pop ( ) ;
3435
35- var logForGivenLevel = function ( l ) {
36- var originalConsoleLevel = console [ l ] ;
37-
38- // warning level is the only level that doesn't map up
39- // correctly with what Sentry expects.
40- if ( l === 'warn' ) l = 'warning' ;
41- return function ( ) {
42- var args = [ ] . slice . call ( arguments ) ;
43-
44- var msg = '' + args . join ( ' ' ) ;
45- var data = { level : l , logger : 'console' , extra : { 'arguments' : args } } ;
46- if ( pluginOptions . callback ) {
47- pluginOptions . callback ( msg , data ) ;
48- } else {
49- Raven . captureMessage ( msg , data ) ;
50- }
51-
52- // this fails for some browsers. :(
53- if ( originalConsoleLevel ) {
54- // IE9 doesn't allow calling apply on console functions directly
55- // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193
56- Function . prototype . apply . call (
57- originalConsoleLevel ,
58- originalConsole ,
59- args
60- ) ;
61- }
62- } ;
36+ var callback = function ( msg , data ) {
37+ Raven . captureMessage ( msg , data ) ;
6338 } ;
6439
6540 while ( level ) {
66- console [ level ] = logForGivenLevel ( level ) ;
41+ wrapConsoleMethod ( console , level , callback ) ;
6742 level = logLevels . pop ( ) ;
6843 }
6944}
7045
7146module . exports = consolePlugin ;
7247
48+ } , { "2" :2 } ] , 2 :[ function ( _dereq_ , module , exports ) {
49+ 'use strict' ;
50+
51+ var wrapMethod = function ( console , level , callback ) {
52+ var originalConsoleLevel = console [ level ] ;
53+ var originalConsole = console ;
54+
55+ if ( ! ( level in console ) ) {
56+ return ;
57+ }
58+
59+ var sentryLevel = level === 'warn'
60+ ? 'warning'
61+ : level ;
62+
63+ console [ level ] = function ( ) {
64+ var args = [ ] . slice . call ( arguments ) ;
65+
66+ var msg = '' + args . join ( ' ' ) ;
67+ var data = { level : sentryLevel , logger : 'console' , extra : { 'arguments' : args } } ;
68+ callback && callback ( msg , data ) ;
69+
70+ // this fails for some browsers. :(
71+ if ( originalConsoleLevel ) {
72+ // IE9 doesn't allow calling apply on console functions directly
73+ // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193
74+ Function . prototype . apply . call (
75+ originalConsoleLevel ,
76+ originalConsole ,
77+ args
78+ ) ;
79+ }
80+ } ;
81+ } ;
82+
83+ module . exports = {
84+ wrapMethod : wrapMethod
85+ } ;
86+
7387} , { } ] } , { } , [ 1 ] ) ( 1 )
7488} ) ;
0 commit comments