@ -50,8 +50,9 @@ var events = require('events')
, util = require ( 'util' )
, layouts = require ( './layouts' )
, levels = require ( './levels' )
, LoggingEvent = require ( './logger' ) . LoggingEvent
, Logger = require ( './logger' ) . Logger
, loggerModule = require ( './logger' )
, LoggingEvent = loggerModule . LoggingEvent
, Logger = loggerModule . Logger
, ALL _CATEGORIES = '[all]'
, appenders = { }
, loggers = { }
@ -306,11 +307,27 @@ function loadAppender(appender) {
appenderMakers [ appender ] = appenderModule . configure . bind ( appenderModule ) ;
}
/ * *
* Shutdown all log appenders . This will first disable all writing to appenders
* and then call the shutdown function each appender .
*
* @ params { Function } cb - The callback to be invoked once all appenders have
* shutdown . If an error occurs , the callback will be given the error object
* as the first argument .
* @ returns { void }
* /
function shutdown ( cb ) {
// First, disable all writing to appenders. This prevents appenders from
// not being able to be drained because of run-away log writes.
loggerModule . disableAllLogWrites ( ) ;
// Next, get all the shutdown functions for appenders as an array.
var shutdownFunctions = Object . keys ( appenderShutdowns ) . reduce (
function ( accum , category ) {
return accum . concat ( appenderShutdowns [ category ] ) ;
} , [ ] ) ;
// Call each of the shutdown functions.
async . forEach (
shutdownFunctions ,
function ( shutdownFn , done ) {