3 var vows = require('vows')
5 , assert = require('assert')
6 , EOL = require('os').EOL || '\n';
8 function remove(filename) {
10 fs.unlinkSync(filename);
12 //doesn't really matter if it failed
16 vows.describe('log4js categoryFilter').addBatch({
20 var log4js = require('../lib/log4js'), logEvents = [], webLogger, appLogger;
21 log4js.clearAppenders();
22 var appender = require('../lib/appenders/categoryFilter')
25 function(evt) { logEvents.push(evt); }
27 log4js.addAppender(appender, ["app","web"]);
29 webLogger = log4js.getLogger("web");
30 appLogger = log4js.getLogger("app");
32 webLogger.debug('This should get logged');
33 appLogger.debug('This should not');
34 webLogger.debug('Hello again');
35 log4js.getLogger('db').debug('This shouldn\'t be included by the appender anyway');
39 'should only pass matching category' : function(logEvents) {
40 assert.equal(logEvents.length, 2);
41 assert.equal(logEvents[0].data[0], 'This should get logged');
42 assert.equal(logEvents[1].data[0], 'Hello again');
48 var log4js = require('../lib/log4js')
51 remove(__dirname + '/categoryFilter-web.log');
52 remove(__dirname + '/categoryFilter-noweb.log');
54 log4js.configure('test/with-categoryFilter.json');
55 logger = log4js.getLogger("app");
56 weblogger = log4js.getLogger("web");
58 logger.info('Loading app');
59 logger.debug('Initialising indexes');
60 weblogger.info('00:00:00 GET / 200');
61 weblogger.warn('00:00:00 GET / 500');
62 //wait for the file system to catch up
63 setTimeout(this.callback, 500);
67 fs.readFile(__dirname + '/categoryFilter-noweb.log', 'utf8', this.callback);
69 'should contain all log messages': function(contents) {
70 var messages = contents.trim().split(EOL);
71 assert.deepEqual(messages, ['Loading app','Initialising indexes']);
74 'tmp-tests-web.log': {
76 fs.readFile(__dirname + '/categoryFilter-web.log','utf8',this.callback);
78 'should contain only error and warning log messages': function(contents) {
79 var messages = contents.trim().split(EOL);
80 assert.deepEqual(messages, ['00:00:00 GET / 200','00:00:00 GET / 500']);