diff --git a/lib/log4js.js b/lib/log4js.js index f89369c..f2677ee 100644 --- a/lib/log4js.js +++ b/lib/log4js.js @@ -56,6 +56,7 @@ var events = require('events') , appenders = {} , loggers = {} , appenderMakers = {} +, appenderShutdowns = {} , defaultConfig = { appenders: [ { type: "console" } @@ -299,24 +300,23 @@ function loadAppender(appender) { appenderModule = require(appender); } module.exports.appenders[appender] = appenderModule.appender.bind(appenderModule); + if (appenderModule.shutdown) { + appenderShutdowns[appender] = appenderModule.shutdown.bind(appenderModule); + } appenderMakers[appender] = appenderModule.configure.bind(appenderModule); } function shutdown(cb) { - var allAppenders = Object.keys(appenders).reduce( + var shutdownFunctions = Object.keys(appenderShutdowns).reduce( function(accum, category) { - return accum.concat(appenders[category]); + return accum.concat(appenderShutdowns[category]); }, []); async.forEach( - allAppenders, - function(appender, done) { - if (appender.shutdown) { - appender.shutdown(done); - } else { - done(); - } + shutdownFunctions, + function(shutdownFn, done) { + shutdownFn(done); }, - function() { process.nextTick(cb); } + cb ); }