From 25fa48ee8d0440e447f33ebe243666318508ae13 Mon Sep 17 00:00:00 2001 From: Rolf Koenders Date: Tue, 21 Jan 2014 23:39:54 +0100 Subject: [PATCH 1/4] Set the global level via the configuration object passed to log4js.configure or target `all` in the `levels` object. --- lib/log4js.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/log4js.js b/lib/log4js.js index fc3baca..f6b6b4a 100644 --- a/lib/log4js.js +++ b/lib/log4js.js @@ -166,6 +166,9 @@ function configureLevels(levels) { if (levels) { for (var category in levels) { if (levels.hasOwnProperty(category)) { + if(category === "all") { + setGlobalLogLevel(levels[category]); + } getLogger(category).setLevel(levels[category]); } } @@ -173,7 +176,9 @@ function configureLevels(levels) { } function setGlobalLogLevel(level) { - Logger.prototype.level = levels.toLevel(level, levels.TRACE); + if(level) { + Logger.prototype.level = levels.toLevel(level, levels.TRACE); + } } /** @@ -199,6 +204,7 @@ function configureOnceOff(config, options) { try { configureAppenders(config.appenders, options); configureLevels(config.levels); + setGlobalLogLevel(config.globalLevel); if (config.replaceConsole) { replaceConsole(); From e7c0b0da5245c86624d953317ea4d24ebf36c338 Mon Sep 17 00:00:00 2001 From: Rolf Koenders Date: Wed, 22 Jan 2014 20:13:36 +0100 Subject: [PATCH 2/4] =?UTF-8?q?Changed=20to=20only=20the=20=E2=80=9Alevels?= =?UTF-8?q?=E2=80=99=20option=20as=20discussed=20in=20#87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/log4js.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/log4js.js b/lib/log4js.js index f6b6b4a..453a62c 100644 --- a/lib/log4js.js +++ b/lib/log4js.js @@ -176,9 +176,7 @@ function configureLevels(levels) { } function setGlobalLogLevel(level) { - if(level) { - Logger.prototype.level = levels.toLevel(level, levels.TRACE); - } + Logger.prototype.level = levels.toLevel(level, levels.TRACE); } /** @@ -204,7 +202,6 @@ function configureOnceOff(config, options) { try { configureAppenders(config.appenders, options); configureLevels(config.levels); - setGlobalLogLevel(config.globalLevel); if (config.replaceConsole) { replaceConsole(); From 6ae01b2b84a2f08667a9e5456b8aee45754b948e Mon Sep 17 00:00:00 2001 From: Rolf Koenders Date: Thu, 23 Jan 2014 10:34:56 +0100 Subject: [PATCH 3/4] Update log4js.js Overlooked that there was already a var with '[all]'. --- lib/log4js.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/log4js.js b/lib/log4js.js index 453a62c..bd5ebda 100644 --- a/lib/log4js.js +++ b/lib/log4js.js @@ -166,7 +166,7 @@ function configureLevels(levels) { if (levels) { for (var category in levels) { if (levels.hasOwnProperty(category)) { - if(category === "all") { + if(category === ALL_CATEGORIES) { setGlobalLogLevel(levels[category]); } getLogger(category).setLevel(levels[category]); From 8cf03507dda5b8b309d2dad8d65ea15d1f7a9aee Mon Sep 17 00:00:00 2001 From: = Date: Sun, 4 May 2014 15:20:22 +0200 Subject: [PATCH 4/4] Add unit test to check if the level is set on all categories --- test/global-log-level-test.js | 59 ++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/test/global-log-level-test.js b/test/global-log-level-test.js index df9b359..4ccc583 100644 --- a/test/global-log-level-test.js +++ b/test/global-log-level-test.js @@ -8,7 +8,7 @@ vows.describe('log4js global loglevel').addBatch({ var log4js = require('../lib/log4js'); return log4js; }, - + 'set global loglevel on creation': function(log4js) { var log1 = log4js.getLogger('log1'); var level = 'OFF'; @@ -16,14 +16,14 @@ vows.describe('log4js global loglevel').addBatch({ level = 'TRACE'; } assert.notEqual(log1.level.toString(), level); - + log4js.setGlobalLogLevel(level); assert.equal(log1.level.toString(), level); var log2 = log4js.getLogger('log2'); assert.equal(log2.level.toString(), level); }, - + 'global change loglevel': function(log4js) { var log1 = log4js.getLogger('log1'); var log2 = log4js.getLogger('log2'); @@ -32,7 +32,7 @@ vows.describe('log4js global loglevel').addBatch({ level = 'TRACE'; } assert.notEqual(log1.level.toString(), level); - + log4js.setGlobalLogLevel(level); assert.equal(log1.level.toString(), level); assert.equal(log2.level.toString(), level); @@ -46,20 +46,20 @@ vows.describe('log4js global loglevel').addBatch({ level = 'TRACE'; } assert.notEqual(log1.level.toString(), level); - + var oldLevel = log1.level.toString(); assert.equal(log2.level.toString(), oldLevel); - + log2.setLevel(level); assert.equal(log1.level.toString(), oldLevel); assert.equal(log2.level.toString(), level); assert.notEqual(oldLevel, level); - + log2.removeLevel(); assert.equal(log1.level.toString(), oldLevel); assert.equal(log2.level.toString(), oldLevel); }, - + 'preload loglevel': function(log4js) { var log1 = log4js.getLogger('log1'); var level = 'OFF'; @@ -67,20 +67,55 @@ vows.describe('log4js global loglevel').addBatch({ level = 'TRACE'; } assert.notEqual(log1.level.toString(), level); - + var oldLevel = log1.level.toString(); log4js.getLogger('log2').setLevel(level); - + assert.equal(log1.level.toString(), oldLevel); - + // get again same logger but as different variable var log2 = log4js.getLogger('log2'); assert.equal(log2.level.toString(), level); assert.notEqual(oldLevel, level); - + log2.removeLevel(); assert.equal(log1.level.toString(), oldLevel); assert.equal(log2.level.toString(), oldLevel); + }, + + 'set level on all categories': function(log4js) { + // Get 2 loggers + var log1 = log4js.getLogger('log1'); + var log2 = log4js.getLogger('log2'); + + // First a test with 2 categories with different levels + var config = { + 'levels': { + 'log1': 'ERROR', + 'log2': 'WARN' + } + }; + log4js.configure(config); + + // Check if the levels are set correctly + assert.equal('ERROR', log1.level.toString()); + assert.equal('WARN', log2.level.toString()); + + log1.removeLevel(); + log2.removeLevel(); + + // Almost identical test, but now we set + // level on all categories + var config2 = { + 'levels': { + '[all]': 'DEBUG' + } + }; + log4js.configure(config2); + + // Check if the loggers got the DEBUG level + assert.equal('DEBUG', log1.level.toString()); + assert.equal('DEBUG', log2.level.toString()); } } }).export(module);