From 2a336d9a5d71c1f99fdf9e36cd95499bcd6ef71f Mon Sep 17 00:00:00 2001 From: Naoyuki Sogo Date: Fri, 28 Sep 2018 15:28:29 +0900 Subject: [PATCH 1/2] fix: #793 --- lib/appenders/multiFile.js | 3 +++ 1 file changed, 3 insertions(+) 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); From f066f19a2cc3d6f9fd8b4764e23225cc931856c6 Mon Sep 17 00:00:00 2001 From: Naoyuki Sogo Date: Tue, 2 Oct 2018 09:24:54 +0900 Subject: [PATCH 2/2] test: multiFile appenders' shutdown called before use --- test/tap/multi-file-appender-test.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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(); });