From 2daf29b400e796c8414cb648994ccc4af4e57ece Mon Sep 17 00:00:00 2001 From: Vladimir Mitev Date: Tue, 20 May 2014 13:45:46 +0300 Subject: [PATCH 1/4] Clusterred appender should consider the categories. It turns out that whenever the clusterred appender is used the log event is passed to all actual appenders. The actual appender's category is ignored. Signed-off-by: Vladimir Mitev --- lib/appenders/clustered.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/appenders/clustered.js b/lib/appenders/clustered.js index aae3a4c..b427ab6 100755 --- a/lib/appenders/clustered.js +++ b/lib/appenders/clustered.js @@ -71,7 +71,10 @@ function createAppender(config) { if (config.actualAppenders) { var size = config.actualAppenders.length; for(var i = 0; i < size; i++) { - config.actualAppenders[i](loggingEvent); + if (!config.appenders[i].category || config.appenders[i].category === loggingEvent.categoryName) { + // Relying on the index is not a good practice but otherwise the change would have been bigger. + config.actualAppenders[i](loggingEvent); + } } } } From e638ff727102740cd641062c9955ee2243e59dac Mon Sep 17 00:00:00 2001 From: Vladimir Mitev Date: Tue, 20 May 2014 14:42:29 +0300 Subject: [PATCH 2/4] Unit test. Fixed the old unit tests. Added validation for new functionality. Signed-off-by: Vladimir Mitev --- test/clusteredAppender-test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/clusteredAppender-test.js b/test/clusteredAppender-test.js index 91e0a0f..f36748c 100755 --- a/test/clusteredAppender-test.js +++ b/test/clusteredAppender-test.js @@ -37,7 +37,8 @@ vows.describe('log4js cluster appender').addBatch({ }); var masterAppender = appenderModule.appender({ - actualAppenders: [ fakeActualAppender ] + actualAppenders: [fakeActualAppender, fakeActualAppender, fakeActualAppender], + appenders: [{}, {category: "test"}, {category: "wovs"}] }); // Actual test - log message using masterAppender @@ -56,7 +57,9 @@ vows.describe('log4js cluster appender').addBatch({ }, "should log using actual appender": function(topic) { + assert.equal(topic.loggingEvents.length, 2) assert.equal(topic.loggingEvents[0].data[0], 'masterAppender test'); + assert.equal(topic.loggingEvents[1].data[0], 'masterAppender test'); }, }, From d18fb466fb22c29772a0eb940f8466b74d9fca54 Mon Sep 17 00:00:00 2001 From: mishless Date: Fri, 23 May 2014 13:58:52 +0300 Subject: [PATCH 3/4] Update connect-logger.js to work correctly with express When used with express levels are wrong since send() does not call writeHead, but sets responseCode on response. --- lib/connect-logger.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/connect-logger.js b/lib/connect-logger.js index 8c9e768..eac24a7 100644 --- a/lib/connect-logger.js +++ b/lib/connect-logger.js @@ -84,6 +84,14 @@ function getLogger(logger4js, options) { res.end = end; res.end(chunk, encoding); res.responseTime = new Date() - start; + //status code response level handling + if(res.statusCode && options.level === 'auto'){ + level = levels.INFO; + if(res.statusCode >= 300) level = levels.WARN; + if(res.statusCode >= 400) level = levels.ERROR; + } else { + level = levels.toLevel(options.level, levels.INFO); + } if (thislogger.isLevelEnabled(level)) { if (typeof fmt === 'function') { var line = fmt(req, res, function(str){ return format(str, req, res); }); From f8b6cc7c39dfde5dc41fced0b142749bbe1a0d3a Mon Sep 17 00:00:00 2001 From: Vladimir Mitev Date: Mon, 26 May 2014 15:56:23 +0300 Subject: [PATCH 4/4] Revert "Update connect-logger.js to work correctly with express" This reverts commit d18fb466fb22c29772a0eb940f8466b74d9fca54. --- lib/connect-logger.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lib/connect-logger.js b/lib/connect-logger.js index eac24a7..8c9e768 100644 --- a/lib/connect-logger.js +++ b/lib/connect-logger.js @@ -84,14 +84,6 @@ function getLogger(logger4js, options) { res.end = end; res.end(chunk, encoding); res.responseTime = new Date() - start; - //status code response level handling - if(res.statusCode && options.level === 'auto'){ - level = levels.INFO; - if(res.statusCode >= 300) level = levels.WARN; - if(res.statusCode >= 400) level = levels.ERROR; - } else { - level = levels.toLevel(options.level, levels.INFO); - } if (thislogger.isLevelEnabled(level)) { if (typeof fmt === 'function') { var line = fmt(req, res, function(str){ return format(str, req, res); });