use safe stringify to prevent circular reference exceptions (#75)

diff --git a/package.json b/package.json
index c02f125..187de1f 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
     "moment": "^2.11.1",
     "lodash": "^3.10.1",
     "request": "2.69.0",
-    "nano": "^6.2.0"
+    "nano": "^6.2.0",
+    "json-stringify-safe": "^5.0.1"
   }
 }
\ No newline at end of file
diff --git a/provider/Logger.js b/provider/Logger.js
index bef4241..0026bcb 100644
--- a/provider/Logger.js
+++ b/provider/Logger.js
@@ -1,6 +1,7 @@
 var _ = require('lodash');
 var moment = require('moment');
 var winston = require('winston');
+var safeStringify = require('json-stringify-safe');
 
 var emailRegex = /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/g;
 
@@ -28,7 +29,7 @@
     args.shift();
     args.forEach(function(arg, i) {
         if (_.isObject(args[i])) {
-            args[i] = JSON.stringify(args[i]);
+            args[i] = safeStringify(args[i]);
         }
     });
     return args.join(' ');
diff --git a/provider/lib/utils.js b/provider/lib/utils.js
index f3f49e7..8dda685 100644
--- a/provider/lib/utils.js
+++ b/provider/lib/utils.js
@@ -77,7 +77,7 @@
             that.triggers[dataTrigger.id] = dataTrigger;
 
             feed.on('change', function (change) {
-                logger.info(method, 'Trigger', dataTrigger.id, 'got change from', dataTrigger.dbname, change);
+                logger.info(method, 'Trigger', dataTrigger.id, 'got change from', dataTrigger.dbname);
 
                 var triggerHandle = that.triggers[dataTrigger.id];
                 if (triggerHandle) {
@@ -139,7 +139,7 @@
         var method = 'initTrigger';
 
         // validate parameters here
-        logger.info(method, 'create has received the following request args', JSON.stringify(obj));
+        logger.info(method, 'create has received the following request args', obj);
 
         // if the trigger creation request has not set the max trigger fire limit
         // we will set it here (default value can be updated in ./constants.js)
@@ -322,7 +322,7 @@
         }
         form.dbname = dataTrigger.dbname;
 
-        logger.info(method, 'firing trigger', triggerName, 'with db update', JSON.stringify(form));
+        logger.info(method, 'firing trigger', triggerName, 'with db update');
 
         var host = 'https://' + routerHost + ':' + 443;
         var uri = host + '/api/v1/namespaces/' + triggerObj.namespace + '/triggers/' + triggerObj.name;