10000 fix(fileAppender): Fix up shutdown functions · mKoder/log4js-node@303f10a · GitHub
[go: up one dir, main page]

Skip to content

Commit 303f10a

Browse files
committed
fix(fileAppender): Fix up shutdown functions
1 parent db90ea6 commit 303f10a

File tree

4 files changed

+60
-12
lines changed

4 files changed

+60
-12
lines changed

lib/appenders/dateFile.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,9 @@ function shutdown(cb) {
8282
}
8383

8484
return openFiles.forEach((file) => {
85-
if (!file.write(eol, 'utf-8')) {
86-
file.once('drain', () => {
87-
file.end(complete);
88-
});
89-
} else {
85+
file.write('', 'utf-8', () => {
9086
file.end(complete);
91-
}
87+
});
9288
});
9389
}
9490

lib/appenders/file.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,9 @@ function shutdown(cb) {
113113
}
114114

115115
return openFiles.forEach((file) => {
116-
if (!file.write(eol, 'utf-8')) {
117-
file.once('drain', () => {
118-
file.end(complete);
119-
});
120-
} else {
116+
file.write('', 'utf-8', () => {
121117
file.end(complete);
122-
}
118+
});
123119
});
124120
}
125121

test/tap/dateFileAppender-test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,5 +189,31 @@ test('../../lib/appenders/dateFile', (batch) => {
189189
t.end();
190190
});
191191

192+
batch.test('should flush logs on shutdown', (t) => {
193+
const testFile = path.join(__dirname, 'date-appender-default.log');
194+
const appender = require('../../lib/appenders/dateFile').appender(testFile);
195+
const logger = log4js.getLogger('default-settings');
196+
197+
log4js.clearAppenders();
198+
log4js.addAppender(appender, 'default-settings');
199+
200+
logger.info('1');
201+
logger.info('2');
202+
logger.info('3');
203+
t.teardown(() => { removeFile('date-appender-default.log'); });
204+
205+
log4js.shutdown(() => {
206+
fs.readFile(testFile, 'utf8', (err, fileContents) => {
207+
// 3 lines of output, plus the trailing newline.
208+
t.equal(fileContents.split(EOL).length, 4);
209+
t.match(
210+
fileContents,
211+
/\[\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d{3}] \[INFO] default-settings - /
212+
);
213+
t.end();
214+
});
215+
});
216+
});
217+
192218
batch.end();
193219
});

test/tap/fileAppender-test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,36 @@ test('log4js fileAppender', (batch) => {
104104
}, 100);
105105
});
106106

107+
batch.test('should flush logs on shutdown', (t) => {
108+
const testFile = path.join(__dirname, 'fa-default-test.log');
109+
const logger = log4js.getLogger('default-settings');
110+
remove(testFile);
111+
112+
log4js.clearAppenders();
113+
const fileAppender = require('../../lib/appenders/file');
114+
log4js.addAppender(
115+
fileAppender.appender(testFile),
116+
fileAppender.shutdown,
117+
'default-settings'
118+
);
119+
120+
logger.info('1');
121+
logger.info('2');
122+
logger.info('3');
123+
124+
log4js.shutdown(() => {
125+
fs.readFile(testFile, 'utf8', (err, fileContents) => {
126+
// 3 lines of output, plus the trailing newline.
127+
t.equal(fileContents.split(EOL).length, 4);
128+
t.match(
129+
fileContents,
130+
/\[\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d{3}] \[INFO] default-settings - /
131+
);
132+
t.end();
133+
});
134+
});
135+
});
136+
107137
batch.test('fileAppender subcategories', (t) => {
108138
log4js.clearAppenders();
109139

0 commit comments

Comments
 (0)
0