migrated logLevelFilter tests to mocha, changed filter api slightly

This commit is contained in:
Gareth Jones
2013-08-26 15:38:40 +10:00
parent b2569c6d9d
commit be1a9ca411
4 changed files with 158 additions and 20 deletions

View File

@@ -1,21 +1,40 @@
"use strict";
var levels = require('../levels')
, debug = require('debug')('log4js:logLevelFilter')
, log4js = require('../log4js');
function logLevelFilter (levelString, appender) {
var level = levels.toLevel(levelString);
function logLevelFilter(allowedLevels, appender) {
return function(logEvent) {
if (logEvent.level.isGreaterThanOrEqualTo(level)) {
debug("Checking ", logEvent.level, " against ", allowedLevels);
if (allowedLevels.some(function(item) { return item.level === logEvent.level.level; })) {
debug("Sending ", logEvent, " to appender ", appender);
appender(logEvent);
}
};
}
function configure(config) {
log4js.loadAppender(config.appender.type);
var appender = log4js.appenderMakers[config.appender.type](config.appender);
return logLevelFilter(config.level, appender);
function configure(config, appenderByName) {
if (!Array.isArray(config.allow)) {
throw new Error("No allowed log levels specified.");
}
var allowedLevels = config.allow.map(function(allowed) {
var level = levels.toLevel(allowed);
if (!level) {
throw new Error("Unrecognised log level '" + allowed + "'.");
}
return level;
});
if (allowedLevels.length === 0) {
throw new Error("No allowed log levels specified.");
}
if (!config.appender) {
throw new Error("Missing an appender.");
}
return logLevelFilter(allowedLevels, appenderByName(config.appender));
}
exports.appender = logLevelFilter;
exports.configure = configure;

View File

@@ -200,6 +200,14 @@ function clearAppenders () {
appenders = {};
}
function appenderByName(name) {
if (appenders.hasOwnProperty(name)) {
return appenders[name];
} else {
throw new Error("Appender '" + name + "' not found.");
}
}
function configureAppenders(appenderMap) {
clearAppenders();
Object.keys(appenderMap).forEach(function(appenderName) {
@@ -207,7 +215,7 @@ function configureAppenders(appenderMap) {
loadAppender(appenderConfig.type);
appenderConfig.makers = appenderMakers;
try {
appenders[appenderName] = appenderMakers[appenderConfig.type](appenderConfig);
appenders[appenderName] = appenderMakers[appenderConfig.type](appenderConfig, appenderByName);
} catch(e) {
throw new Error("log4js configuration problem for appender '" + appenderName + "'. Error was " + e.stack);
}