Implemented shutdown function for SMTP appender

This commit is contained in:
hasegawa-jun 2015-03-04 09:13:30 +09:00
parent 35067af550
commit adfad9ad20

View File

@ -1,7 +1,8 @@
"use strict";
var layouts = require("../layouts")
, mailer = require("nodemailer")
, os = require('os');
, os = require('os')
, unsentCount = 0;
/**
* SMTP Appender. Sends logging events using SMTP protocol.
@ -27,6 +28,7 @@ function smtpAppender(config, layout) {
var transport = mailer.createTransport(config.transport, config[config.transport]);
var firstEvent = logEventBuffer[0];
var body = "";
var count = logEventBuffer.length;
while (logEventBuffer.length > 0) {
body += layout(logEventBuffer.shift()) + "\n";
}
@ -51,6 +53,7 @@ function smtpAppender(config, layout) {
console.error("log4js.smtpAppender - Error happened", error);
}
transport.close();
unsentCount -= count;
});
}
}
@ -65,6 +68,7 @@ function smtpAppender(config, layout) {
}
return function(loggingEvent) {
unsentCount++;
logEventBuffer.push(loggingEvent);
if (sendInterval > 0) {
scheduleSend();
@ -82,7 +86,16 @@ function configure(config) {
return smtpAppender(config, layout);
}
function shutdown(cb) {
async.until(function() {
return unsentCount === 0;
}, function(done) {
setTimeout(done, 100);
}, cb);
}
exports.name = "smtp";
exports.appender = smtpAppender;
exports.configure = configure;
exports.shutdown = shutdown;