8000 appenders can be added to multiple categories at the same time · Web5design/log4js-node@5ffc00c · GitHub
[go: up one dir, main page]

Skip to content

Commit 5ffc00c

Browse files
author
Gareth Jones
committed
appenders can be added to multiple categories at the same time
1 parent caa7338 commit 5ffc00c

File tree

4 files changed

+70
-8
lines changed

4 files changed

+70
-8
lines changed

lib/log4js.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ var log4js = {
5555
* @static
5656
* @final
5757
*/
58-
version: "0.1.0",
58+
version: "0.1.1",
5959

6060
/**
6161
* Date of logger initialized.
@@ -119,8 +119,21 @@ exports.getDefaultLogger = log4js.getDefaultLogger = function() {
119119
return log4js.getLogger(DEFAULT_CATEGORY);
120120
};
121121

122-
exports.addAppender = log4js.addAppender = function (appender, categoryName) {
123-
var category = categoryName || ALL_CATEGORIES;
122+
/**
123+
* args are appender, then zero or more categories
124+
*/
125+
exports.addAppender = log4js.addAppender = function () {
126+
var args = Array.prototype.slice.call(arguments);
127+
var appender = args.shift();
128+
if (args.length == 0) {
129+
args = [ ALL_CATEGORIES ];
130+
}
131+
//argument may already be an array
132+
if (args[0].forEach) {
133+
args = args[0];
134+
}
135+
136+
args.forEach(function(category) {
124137
if (!log4js.appenders[category]) {
125138
log4js.appenders[category] = [];
126139
}
@@ -135,13 +148,14 @@ exports.addAppender = log4js.addAppender = function (appender, categoryName) {
135148
} else if (log4js.loggers[category]) {
136149
log4js.loggers[category].addListener("log", appender);
137150
}
151+
});
138152
};
139153

140154
exports.clearAppenders = log4js.clearAppenders = function() {
141155
log4js.appenders = [];
142156
for (var logger in log4js.loggers) {
143157
if (log4js.loggers.hasOwnProperty(logger)) {
144-
log4js.loggers[logger].listeners.length = 0;
158+
log4js.loggers[logger].removeAllListeners("log");
145159
}
146160
}
147161
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "log4js",
3-
"version": "0.1.0",
3+
"version": "0.1.1",
44
"description": "Port of Log4js to work with node.",
55
"keywords": [
66
"logging",

spec/lib/jspec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1770,4 +1770,4 @@
17701770
}
17711771
})
17721772

1773-
})()
1773+
})()

spec/spec.logging.js

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ describe 'log4js'
4848

4949
describe 'addAppender'
5050
before_each
51-
log4js.clearAppenders();
5251
appenderEvent = undefined;
5352
appender = function(logEvent) { appenderEvent = logEvent; };
5453
end
@@ -72,6 +71,15 @@ describe 'log4js'
7271

7372
appenderEvent.should.be event
7473
otherEvent.should.be event
74+
75+
otherEvent = undefined;
76+
appenderEvent = undefined;
77+
log4js.getLogger('pants').debug("this should not be propagated to otherEvent");
78+
otherEvent.should.be undefined
79+
appenderEvent.should.not.be undefined
80+
appenderEvent.message.should.be "this should not be propagated to otherEvent"
81+
82+
cheeseLogger = null;
7583
end
7684
end
7785

@@ -88,6 +96,45 @@ describe 'log4js'
8896
end
8997
end
9098

99+
describe 'with multiple categories'
100+
it 'should register the function as a listener for all the categories'
101+
log4js.addAppender(appender, 'tests', 'biscuits');
102+
103+
logger.debug('this is a test');
104+
appenderEvent.should.be event
105+
appenderEvent = undefined;
106+
107+
var otherLogger = log4js.getLogger('biscuits');
108+
otherLogger.debug("mmm... garibaldis");
109+
appenderEvent.should.not.be undefined
110+
appenderEvent.message.should.be "mmm... garibaldis"
111+
appenderEvent = undefined;
112+
113+
otherLogger = null;
114+
115+
log4js.getLogger("something else").debug("pants");
116+
appenderEvent.should.be undefined
117+
end
118+
119+
it 'should register the function when the list of categories is an array'
120+
log4js.addAppender(appender, ['tests', 'pants']);
121+
122+
logger.debug('this is a test');
123+
appenderEvent.should.be event
124+
appenderEvent = undefined;
125+
126+
var otherLogger = log4js.getLogger('pants');
127+
otherLogger.debug("big pants");
128+
appenderEvent.should.not.be undefined
129+
appenderEvent.message.should.be "big pants"
130+
appenderEvent = undefined;
131+
132+
otherLogger = null;
133+
134+
log4js.getLogger("something else").debug("pants");
135+
appenderEvent.should.be undefined
136+
end
137+
end
91138
end
92139

93140
describe 'basicLayout'
@@ -189,6 +236,8 @@ describe 'log4js'
189236
//and sets the log level for "tests" to WARN
190237
log4js.configure('spec/fixtures/log4js.json');
191238
event = undefined;
239+
logger = log4js.getLogger("tests");
240+
logger.addListener("log", function(evt) { event = evt });
192241

193242
logger.info('this should not fire an event');
194243
event.should.be undefined
@@ -200,7 +249,6 @@ describe 'log4js'
200249

201250
it 'should handle logLevelFilter configuration'
202251
log4js.configure('spec/fixtures/with-logLevelFilter.json');
203-
event = undefined;
204252

205253
logger.info('main');
206254
logger.error('both');

0 commit comments

Comments
 (0)
0