changed the way appenders are loaded, so that they don't need to include log4js as a direct dependency

This commit is contained in:
Gareth Jones
2013-09-15 14:37:01 +10:00
parent 245b2e3b1a
commit 491c2709e7
12 changed files with 350 additions and 185 deletions
+16 -11
View File
@@ -213,8 +213,9 @@ function validateCategories(cats) {
}
function clearAppenders () {
debug("clearing appenders");
debug("clearing appenders and appender makers");
appenders = {};
appenderMakers = {};
}
function appenderByName(name) {
@@ -230,7 +231,6 @@ function configureAppenders(appenderMap) {
Object.keys(appenderMap).forEach(function(appenderName) {
var appender, appenderConfig = appenderMap[appenderName];
loadAppender(appenderConfig.type);
appenderConfig.makers = appenderMakers;
try {
appenders[appenderName] = appenderMakers[appenderConfig.type](
appenderConfig,
@@ -247,21 +247,26 @@ function configureAppenders(appenderMap) {
function loadAppender(appender) {
var appenderModule;
try {
appenderModule = require('./appenders/' + appender);
} catch (e) {
if (!appenderMakers[appender]) {
debug("Loading appender ", appender);
try {
appenderModule = require(appender);
} catch (err) {
throw new Error("Could not load appender of type '" + appender + "'.");
appenderModule = require('./appenders/' + appender);
} catch (e) {
try {
debug("Appender ", appender, " is not a core log4js appender.");
appenderModule = require(appender);
} catch (err) {
throw new Error("Could not load appender of type '" + appender + "'.");
}
}
}
appenderMakers[appender] = appenderModule.configure.bind(appenderModule);
appenderMakers[appender] = appenderModule(layouts, levels);
}
}
module.exports = {
getLogger: getLogger,
configure: configure,
configure: configure
};
//set ourselves up