diff --git a/lib/appenders/multiFile.js b/lib/appenders/multiFile.js index 98307e8..2e43bc5 100644 --- a/lib/appenders/multiFile.js +++ b/lib/appenders/multiFile.js @@ -60,6 +60,9 @@ module.exports.configure = (config, layouts) => { appender.shutdown = (cb) => { let shutdownFunctions = files.size; + if (shutdownFunctions <= 0) { + cb(); + } let error; timers.forEach((timer) => { clearInterval(timer.interval); diff --git a/test/tap/multi-file-appender-test.js b/test/tap/multi-file-appender-test.js index 8b4826d..c3559e2 100644 --- a/test/tap/multi-file-appender-test.js +++ b/test/tap/multi-file-appender-test.js @@ -162,5 +162,24 @@ test('multiFile appender', (batch) => { }); }); + batch.test('should shutdown safely even if it is not used', (t) => { + log4js.configure({ + appenders: { + out: { type: 'stdout' }, + test: { + type: 'multiFile', base: 'logs/', property: 'categoryName', extension: '.log' + } + }, + categories: { + default: { appenders: ['out'], level: 'info' }, + test: { appenders: ['test'], level: 'debug' } + } + }); + log4js.shutdown(() => { + t.ok('callback is called'); + t.end(); + }); + }); + batch.end(); });