text: var utils = require('./utils');
  
  var wrapMethod = function(console, level, callback) {
    var originalConsoleLevel = console[level];
    var originalConsole = console;
  
    if (!(level in console)) {
      return;
    }
  
    var sentryLevel = level === 'warn' ? 'warning' : level;
  
    console[level] = function() {
      var args = [].slice.call(arguments);
  
      var msg = utils.safeJoin(args, ' ');
      var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}};
  
      if (level === 'assert') {
        if (args[0] === false) {
          // Default browsers message
          msg =
            'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert');
          data.extra.arguments = args.slice(1);
          callback && callback(msg, data);
        }
      } else {
        callback && callback(msg, data);
      }
  
      // this fails for some browsers. :(
      if (originalConsoleLevel) {
        // IE9 doesn't allow calling apply on console functions directly
        // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193
        Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);
      }
    };
  };
  
  module.exports = {
    wrapMethod: wrapMethod
  };
  