Conditional Logging: Difference between revisions

From GreaseSpot Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 62: Line 62:
     c = unsafeWindow.console,
     c = unsafeWindow.console,
     cfn = ['log','debug','info','warn','error','assert','dir','dirxml','trace','group','groupCollapsed','groupEnd','time','timeEnd','profile','profileEnd','count','exception','table'];   
     cfn = ['log','debug','info','warn','error','assert','dir','dirxml','trace','group','groupCollapsed','groupEnd','time','timeEnd','profile','profileEnd','count','exception','table'];   
   for(var i=0,l=cfn.length; i<l; i++) {
   for (var i=0,l=cfn.length; i<l; i++) {
     console[cfn[i]] = function() {
     console[cfn[i]] = function() {
       if (DEBUG && c)
       if (DEBUG && c)

Revision as of 04:11, 3 July 2010

Provide a single easy switch to control whether debugging information is output.

Alternative 1

const DEBUG = true;

function debug() {
  if (DEBUG && console) {
    console.log.apply(this, arguments);
  }
}
var links = document.links;
debug("Links: %o", links);

Alternative 2

A slightly simpler method that lets you use more of the Firebug console's routines.

const DEBUG = 1;

var _orig_console = console;
var console = {
  log: function (text) { if (DEBUG) _orig_console.log(text); },
  info: function (text) { if (DEBUG) _orig_console.info(text); },
  warn: function (text) { if (DEBUG) _orig_console.warn(text); },
  error: function (text) { if (DEBUG) _orig_console.error(text); }
};

Alternative 3

An even simpler option, retaining all of Firebug's console routines, and not interfering with additional parameters.

const DEBUG = 1;
if (!DEBUG) {
  var console = {
    log: function() {},
    info: function() {},
    warn: function() {},
    error: function() {},
  };
}

Alternative 4

THE SIMPLEST option, so simple that it's actually kinda more complicated...

But it encapsulates all of Firebug's functionality.

const DEBUG = 1;
if (!console) console = function() {
  var console = {},
    c = unsafeWindow.console,
    cfn = ['log','debug','info','warn','error','assert','dir','dirxml','trace','group','groupCollapsed','groupEnd','time','timeEnd','profile','profileEnd','count','exception','table'];  
  for (var i=0,l=cfn.length; i<l; i++) {
    console[cfn[i]] = function() {
      if (DEBUG && c)
        c[cfn[i]].apply(null, arguments)
    }
  }
  return console;
}();