Allow shutting down of appenders without disabling future log writes

This commit is contained in:
Raul Ochoa 2014-12-02 12:16:15 +01:00
parent ec5f4485f8
commit a669f7c2f4
2 changed files with 12 additions and 1 deletions

View File

@ -80,7 +80,9 @@ function configure(config, options) {
} }
function shutdown(cb) { function shutdown(cb) {
async.each(openFiles, function(file, done) { var filesToClose = openFiles;
openFiles = [];
async.each(filesToClose, function(file, done) {
if (!file.write(eol, "utf-8")) { if (!file.write(eol, "utf-8")) {
file.once('drain', function() { file.once('drain', function() {
file.end(done); file.end(done);

View File

@ -176,6 +176,11 @@ function clearAppenders () {
} }
} }
function clearAndShutdownAppenders(cb) {
clearAppenders();
shutdownAppenders(cb);
}
function configureAppenders(appenderList, options) { function configureAppenders(appenderList, options) {
clearAppenders(); clearAppenders();
if (appenderList) { if (appenderList) {
@ -380,7 +385,10 @@ function shutdown(cb) {
// First, disable all writing to appenders. This prevents appenders from // First, disable all writing to appenders. This prevents appenders from
// not being able to be drained because of run-away log writes. // not being able to be drained because of run-away log writes.
loggerModule.disableAllLogWrites(); loggerModule.disableAllLogWrites();
shutdownAppenders(cb);
}
function shutdownAppenders(cb) {
// Next, get all the shutdown functions for appenders as an array. // Next, get all the shutdown functions for appenders as an array.
var shutdownFunctions = Object.keys(appenderShutdowns).reduce( var shutdownFunctions = Object.keys(appenderShutdowns).reduce(
function(accum, category) { function(accum, category) {
@ -406,6 +414,7 @@ module.exports = {
addAppender: addAppender, addAppender: addAppender,
loadAppender: loadAppender, loadAppender: loadAppender,
clearAppenders: clearAppenders, clearAppenders: clearAppenders,
clearAndShutdownAppenders: clearAndShutdownAppenders,
configure: configure, configure: configure,
shutdown: shutdown, shutdown: shutdown,