Conditional Logging: Difference between revisions
From GreaseSpot Wiki
Jump to navigationJump to search
Created page with 'Provide a single easy switch to control whether debugging information is output. == Alternative 1 == <pre class='sample'> const DEBUG = true; function debug() { if (DEBUG &&…' |
No edit summary |
||
Line 38: | Line 38: | ||
An even simpler option, retaining all of Firebug's console routines, and not interfering with additional parameters. | An even simpler option, retaining all of Firebug's console routines, and not interfering with additional parameters. | ||
<pre class='sample | <pre class='sample'> | ||
const DEBUG = 1; | const DEBUG = 1; | ||
if (!DEBUG) { | if (!DEBUG) { | ||
Line 48: | Line 48: | ||
}; | }; | ||
} | } | ||
</pre> | |||
== Alternative 4 == | |||
THE SIMPLEST option, so simple that it's actually kinda more complicated... | |||
But it encapsulates all of Firebug's functionality. | |||
<pre class='sample-good'> | |||
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; | |||
}(); | |||
</pre> | </pre> | ||
[[Category:Coding Tips]] | [[Category:Coding Tips]] |
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; }();