From 44564de71c5f9689cf434e0e29030703d39f5a3d Mon Sep 17 00:00:00 2001 From: indexzero Date: Fri, 25 Sep 2015 15:00:32 -0700 Subject: [PATCH] [fix] Correct listeners in `logException`. Fixes #218 #213 #327. --- lib/winston/transports/transport.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/winston/transports/transport.js b/lib/winston/transports/transport.js index 93184aff7..d279d008c 100644 --- a/lib/winston/transports/transport.js +++ b/lib/winston/transports/transport.js @@ -113,19 +113,23 @@ Transport.prototype.formatResults = function (results, options) { // all logging has completed. // Transport.prototype.logException = function (msg, meta, callback) { - var self = this; + var self = this, + called; - function onLogged () { - self.removeListener('error', onError); - callback(); + if (this.silent) { + return callback(); } - function onError () { - self.removeListener('logged', onLogged); - callback(); + function onComplete () { + if (!called) { + called = true; + self.removeListener('logged', onComplete); + self.removeListener('error', onComplete); + callback(); + } } - this.once('logged', onLogged); - this.once('error', onError); + this.once('logged', onComplete); + this.once('error', onComplete); this.log(self.exceptionsLevel, msg, meta, function () { }); };