jQuery Logging

Javascript logging can mean the difference between finishing your app early and playing plants vs zombies, or pulling your hair out. Here are some methods to help. If you have firebug installed you can just use console.log. console.log("hello world"); looks safe, but if someone doesn't have firebug installed in Firefox, this will cause a javascript error. console also has error, debug, info, and warn

Making console.log safe

function log(msg) {
   if (window.console) {
      console.log(msg);
   } else {
      alert(msg);
   }
}

Opera

Opera doesn't have console.log. It has opera.postError.

function log(msg) {
   if (window.opera) {
      window.opera.postError(msg);
   } else {
      alert(msg);
   }
}

Putting it all together

function log(msg) {
   var msg = msg || "log";
   if (window.console) {
      console.log(msg);
   } else if (window.opera) {
      window.opera.postError(msg);
   } else {
      alert(msg);
   }
}

jQuery Wrapper

function log(msg) {
   var msg = msg || "log";
   if (window.console) {
      console.log(msg);
   } else if (window.opera) {
      window.opera.postError(msg);
   } else {
      alert(msg);
   }
}

$.fn.log = function(msg) { log("%s: %o", msg, this); return this; }

This allows for jQuery chaining like so:

$(el).log().addClass("blah");