
module.exports.info = function (from, msg) {
  setTimeout(function () {
    log('info', from, msg);
  }, 1);
};

module.exports.err = function (from, msg) {
  setTimeout(function () {
    log('err', from, msg);
  }, 1);
};

function log(type, from, msg) {
  var now = new Date(Date.now());
  now = now.getFullYear() + '/' + now.getMonth() + '/' + now.getDate() +
    ' ' + now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds();

  if (typeof from === 'undefined') {
    from = ''
  } else {
    from = '[' + from[0].toUpperCase() + from.slice(1) + ']';
  }

  if (typeof msg === 'object') {
    msg = JSON.stringify(msg);
  }

  if (type == 'info') {
    console.log(now + ' ' + from + ' ' + msg);
  } else if (type == 'err') {
    console.error(now + ' ' + from + ' ' + msg);
  }
}

@@ -592,24 +592,36 @@
 'object') %7B%0A
+    try %7B%0A  
     msg = JS
@@ -635,24 +635,94 @@
 ngify(msg);%0A
+    %7D catch (TypeError) %7B%0A      console.log(msg);%0A      return;%0A    %7D%0A
   %7D%0A%0A  if (t

Fix a bug in logger.