From 1fa9d029a2a0c3ea2bd34873e2c31a3adcd90a11 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Thu, 19 May 2011 15:25:13 +0200 Subject: [PATCH 1/3] added possibility to define global and local log levels --- lib/log4js.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/log4js.js b/lib/log4js.js index 298bd16..46e7bab 100644 --- a/lib/log4js.js +++ b/lib/log4js.js @@ -265,14 +265,25 @@ function LoggingEvent (categoryName, level, message, exception, logger) { */ function Logger (name, level) { this.category = name || DEFAULT_CATEGORY; - this.level = Level.toLevel(level, levels.TRACE); + + if (! this.level) { + this.setLevel('TRACE'); + } } sys.inherits(Logger, events.EventEmitter); Logger.prototype.setLevel = function(level) { + this.__proto__.level = Level.toLevel(level, levels.TRACE); +}; + +Logger.prototype.setLocalLevel = function(level) { this.level = Level.toLevel(level, levels.TRACE); }; +Logger.prototype.removeLocalLevel = function() { + delete this.level; +}; + Logger.prototype.log = function(logLevel, message, exception) { var loggingEvent = new LoggingEvent(this.category, logLevel, message, exception, this); this.emit("log", loggingEvent); From a1681f557935b5f02bbad5a79a47361194dca185 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 29 May 2011 04:46:05 +0200 Subject: [PATCH 2/3] added tests for global loglevel --- test/test-global-log-level.js | 85 +++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 test/test-global-log-level.js diff --git a/test/test-global-log-level.js b/test/test-global-log-level.js new file mode 100644 index 0000000..39ea432 --- /dev/null +++ b/test/test-global-log-level.js @@ -0,0 +1,85 @@ +var vows = require('vows'), +assert = require('assert'); + +vows.describe('log4js global loglevel').addBatch({ + 'global loglevel' : { + topic: function() { + var log4js = require('../lib/log4js')(); + return log4js; + }, + + 'set global loglevel on creation': function(log4js) { + var log1 = log4js.getLogger('log1'); + var level = 'OFF'; + if (log1.level.toString() == level) { + level = 'TRACE'; + } + assert.notEqual(log1.level.toString(), level); + + log1.setLevel(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'); + var level = 'OFF'; + if (log1.level.toString() == level) { + level = 'TRACE'; + } + assert.notEqual(log1.level.toString(), level); + + log1.setLevel(level); + assert.equal(log1.level.toString(), level); + assert.equal(log2.level.toString(), level); + }, + + 'override loglevel': function(log4js) { + var log1 = log4js.getLogger('log1'); + var log2 = log4js.getLogger('log2'); + var level = 'OFF'; + if (log1.level.toString() == level) { + level = 'TRACE'; + } + assert.notEqual(log1.level.toString(), level); + + var oldLevel = log1.level.toString(); + assert.equal(log2.level.toString(), oldLevel); + + log2.setLocalLevel(level); + assert.equal(log1.level.toString(), oldLevel); + assert.equal(log2.level.toString(), level); + assert.notEqual(oldLevel, level); + + log2.removeLocalLevel(); + assert.equal(log1.level.toString(), oldLevel); + assert.equal(log2.level.toString(), oldLevel); + }, + + 'preload loglevevl': function(log4js) { + var log1 = log4js.getLogger('log1'); + var level = 'OFF'; + if (log1.level.toString() == level) { + level = 'TRACE'; + } + assert.notEqual(log1.level.toString(), level); + + var oldLevel = log1.level.toString(); + log4js.getLogger('log2').setLocalLevel(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.removeLocalLevel(); + assert.equal(log1.level.toString(), oldLevel); + assert.equal(log2.level.toString(), oldLevel); + } + } +}).export(module); From d7a97366cb5a13a10e36910c4f12d0b2680ec435 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Mon, 30 May 2011 13:26:30 +0200 Subject: [PATCH 3/3] global log level is now set via the log4js object --- lib/log4js.js | 13 +++++++------ test/test-global-log-level.js | 12 ++++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/log4js.js b/lib/log4js.js index 46e7bab..6ef64db 100644 --- a/lib/log4js.js +++ b/lib/log4js.js @@ -267,20 +267,16 @@ function Logger (name, level) { this.category = name || DEFAULT_CATEGORY; if (! this.level) { - this.setLevel('TRACE'); + this.__proto__.level = levels.TRACE; } } sys.inherits(Logger, events.EventEmitter); Logger.prototype.setLevel = function(level) { - this.__proto__.level = Level.toLevel(level, levels.TRACE); -}; - -Logger.prototype.setLocalLevel = function(level) { this.level = Level.toLevel(level, levels.TRACE); }; -Logger.prototype.removeLocalLevel = function() { +Logger.prototype.removeLevel = function() { delete this.level; }; @@ -308,6 +304,10 @@ Logger.prototype.isLevelEnabled = function(otherLevel) { } ); +function setGlobalLogLevel(level) { + Logger.prototype.level = Level.toLevel(level, levels.TRACE); +} + /** * Get the default logger instance. * @return {Logger} instance of default logger @@ -672,6 +672,7 @@ module.exports = function (fileSystem, standardOutput, configPaths) { configure: configure, levels: levels, + setGlobalLogLevel: setGlobalLogLevel, consoleAppender: consoleAppender, fileAppender: fileAppender, diff --git a/test/test-global-log-level.js b/test/test-global-log-level.js index 39ea432..8616597 100644 --- a/test/test-global-log-level.js +++ b/test/test-global-log-level.js @@ -16,7 +16,7 @@ vows.describe('log4js global loglevel').addBatch({ } assert.notEqual(log1.level.toString(), level); - log1.setLevel(level); + log4js.setGlobalLogLevel(level); assert.equal(log1.level.toString(), level); var log2 = log4js.getLogger('log2'); @@ -32,7 +32,7 @@ vows.describe('log4js global loglevel').addBatch({ } assert.notEqual(log1.level.toString(), level); - log1.setLevel(level); + log4js.setGlobalLogLevel(level); assert.equal(log1.level.toString(), level); assert.equal(log2.level.toString(), level); }, @@ -49,12 +49,12 @@ vows.describe('log4js global loglevel').addBatch({ var oldLevel = log1.level.toString(); assert.equal(log2.level.toString(), oldLevel); - log2.setLocalLevel(level); + log2.setLevel(level); assert.equal(log1.level.toString(), oldLevel); assert.equal(log2.level.toString(), level); assert.notEqual(oldLevel, level); - log2.removeLocalLevel(); + log2.removeLevel(); assert.equal(log1.level.toString(), oldLevel); assert.equal(log2.level.toString(), oldLevel); }, @@ -68,7 +68,7 @@ vows.describe('log4js global loglevel').addBatch({ assert.notEqual(log1.level.toString(), level); var oldLevel = log1.level.toString(); - log4js.getLogger('log2').setLocalLevel(level); + log4js.getLogger('log2').setLevel(level); assert.equal(log1.level.toString(), oldLevel); @@ -77,7 +77,7 @@ vows.describe('log4js global loglevel').addBatch({ assert.equal(log2.level.toString(), level); assert.notEqual(oldLevel, level); - log2.removeLocalLevel(); + log2.removeLevel(); assert.equal(log1.level.toString(), oldLevel); assert.equal(log2.level.toString(), oldLevel); }