client.js 1.4 KB
(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // Register as an AMD module if available...
        define(['jquery'], factory);
    } else {
        // Browser globals for the unenlightened...
        factory($);
    }
}(function($){
  "use strict";

  var levels = {LEVELS:LEVELS};
  var console = console;
  var Winston = new Function();

  Winston.log = function(level, message, meta) {
    var url = '/winston/log/' + encodeURIComponent(level) +
              '/' + encodeURIComponent(message);
    if (meta) {
      url += '/' + encodeURIComponent(JSON.stringify(meta));
    }
    // send it to the server
    $.ajax({url: url});

    // log it to the browser console
    if (typeof console !== 'undefined') {
      level = (console[level] ? level : 'log');
      console[level](level + ': ' + message);
    }
  };

  // attach methods for each log level
  for (var level in levels) {
    if (levels.hasOwnProperty(level)) {
      (function(level) {
        Winston[level] = function(message, cb) {
          this.log(level, message, cb);
        };
      })(level);
    }
  }

  if (typeof define === 'function' && define.amd) {
    // Register as an AMD module if available...
    return Winston
  } else {
    window.onerror = function(msg, url, code) {
      var error = msg + " in " + url + " with code " + code;
      winston.error(error);
    };

    window.winston = Winston;
  }

}));