188 lines
5.4 KiB
JavaScript
188 lines
5.4 KiB
JavaScript
"use strict";
|
|
var should = require('should')
|
|
, sandbox = require('sandboxed-module')
|
|
, log4js = require('../lib/log4js');
|
|
|
|
describe('log level filter', function() {
|
|
describe('when configured correctly', function() {
|
|
var events = [], logger;
|
|
|
|
before(function() {
|
|
var log4js_sandboxed = sandbox.require(
|
|
'../lib/log4js',
|
|
{ requires:
|
|
{ './appenders/console':
|
|
{ configure: function() { return function(evt) { events.push(evt); }; } }
|
|
}
|
|
}
|
|
);
|
|
log4js_sandboxed.configure({
|
|
appenders: {
|
|
"console": { type: "console", layout: { type: "messagePassThrough" } },
|
|
"errors only": {
|
|
type: "logLevelFilter",
|
|
allow: [ "ERROR", "FATAL" ],
|
|
appender: "console"
|
|
}
|
|
},
|
|
categories: {
|
|
default: { level: "DEBUG", appenders: [ "errors only" ] }
|
|
}
|
|
});
|
|
logger = log4js_sandboxed.getLogger("test");
|
|
});
|
|
|
|
it('should pass events to an appender if they match', function() {
|
|
logger.error("oh no");
|
|
logger.fatal("boom");
|
|
|
|
events.should.have.length(2);
|
|
events[0].data[0].should.eql("oh no");
|
|
events[1].data[0].should.eql("boom");
|
|
});
|
|
|
|
it('should not pass events to the appender if they do not match', function() {
|
|
events.should.have.length(2);
|
|
logger.debug("cheese");
|
|
events.should.have.length(2);
|
|
logger.info("yawn");
|
|
events.should.have.length(2);
|
|
});
|
|
});
|
|
|
|
it('should complain if it has no appender', function() {
|
|
(function() {
|
|
log4js.configure({
|
|
appenders: {
|
|
"errors": {
|
|
type: "logLevelFilter",
|
|
allow: [ "ERROR", "FATAL" ]
|
|
}
|
|
},
|
|
categories: {
|
|
default: { level: "DEBUG", appenders: [ "errors" ] }
|
|
}
|
|
});
|
|
}).should.throw(/Missing an appender\./);
|
|
});
|
|
|
|
it('should complain if it has no list of allowed levels', function() {
|
|
(function() {
|
|
log4js.configure({
|
|
appenders: {
|
|
"console": { type: "console" },
|
|
"errors": {
|
|
type: "logLevelFilter",
|
|
appender: "console"
|
|
}
|
|
},
|
|
categories: {
|
|
default: { level: "DEBUG", appenders: [ "errors" ] }
|
|
}
|
|
});
|
|
}).should.throw(/No allowed log levels specified\./);
|
|
});
|
|
|
|
it('should complain if the referenced appender does not exist', function() {
|
|
(function() {
|
|
log4js.configure({
|
|
appenders: {
|
|
"errors": {
|
|
type: "logLevelFilter",
|
|
allow: [ "ERROR" ],
|
|
appender: "console"
|
|
}
|
|
},
|
|
categories: {
|
|
default: { level: "DEBUG", appenders: [ "errors" ] }
|
|
}
|
|
});
|
|
}).should.throw(/Appender 'console' not found\./);
|
|
});
|
|
|
|
it('should complain if the list of levels is not valid', function() {
|
|
(function() {
|
|
log4js.configure({
|
|
appenders: {
|
|
"errors": {
|
|
type: "logLevelFilter",
|
|
allow: [ "cheese", "biscuits", "ERROR" ],
|
|
appender: { type: "console" }
|
|
}
|
|
},
|
|
categories: {
|
|
default: { level: "DEBUG", appenders: [ "errors" ] }
|
|
}
|
|
});
|
|
}).should.throw(/Unrecognised log level 'cheese'\./);
|
|
});
|
|
});
|
|
|
|
/*
|
|
vows.describe('log4js logLevelFilter').addBatch({
|
|
'appender': {
|
|
topic: function() {
|
|
var log4js = require('../lib/log4js'), logEvents = [], logger;
|
|
log4js.clearAppenders();
|
|
log4js.addAppender(
|
|
require('../lib/appenders/logLevelFilter')
|
|
.appender(
|
|
'ERROR',
|
|
function(evt) { logEvents.push(evt); }
|
|
),
|
|
"logLevelTest"
|
|
);
|
|
|
|
logger = log4js.getLogger("logLevelTest");
|
|
logger.debug('this should not trigger an event');
|
|
logger.warn('neither should this');
|
|
logger.error('this should, though');
|
|
logger.fatal('so should this');
|
|
return logEvents;
|
|
},
|
|
'should only pass log events greater than or equal to its own level' : function(logEvents) {
|
|
assert.equal(logEvents.length, 2);
|
|
assert.equal(logEvents[0].data[0], 'this should, though');
|
|
assert.equal(logEvents[1].data[0], 'so should this');
|
|
}
|
|
},
|
|
|
|
'configure': {
|
|
topic: function() {
|
|
var log4js = require('../lib/log4js')
|
|
, logger;
|
|
|
|
remove(__dirname + '/logLevelFilter.log');
|
|
remove(__dirname + '/logLevelFilter-warnings.log');
|
|
|
|
log4js.configure('test/with-logLevelFilter.json');
|
|
logger = log4js.getLogger("tests");
|
|
logger.info('main');
|
|
logger.error('both');
|
|
logger.warn('both');
|
|
logger.debug('main');
|
|
//wait for the file system to catch up
|
|
setTimeout(this.callback, 100);
|
|
},
|
|
'tmp-tests.log': {
|
|
topic: function() {
|
|
fs.readFile(__dirname + '/logLevelFilter.log', 'utf8', this.callback);
|
|
},
|
|
'should contain all log messages': function(contents) {
|
|
var messages = contents.trim().split('\n');
|
|
assert.deepEqual(messages, ['main','both','both','main']);
|
|
}
|
|
},
|
|
'tmp-tests-warnings.log': {
|
|
topic: function() {
|
|
fs.readFile(__dirname + '/logLevelFilter-warnings.log','utf8',this.callback);
|
|
},
|
|
'should contain only error and warning log messages': function(contents) {
|
|
var messages = contents.trim().split('\n');
|
|
assert.deepEqual(messages, ['both','both']);
|
|
}
|
|
}
|
|
}
|
|
}).export(module);
|
|
*/
|