Skip to content

Commit acd41ef

Browse files
authored
Merge pull request #1144 from log4js-node/refactor
chore(refactor): using writer.writable instead of alive for checking
2 parents e86a809 + 4c4bbe8 commit acd41ef

File tree

2 files changed

+31
-34
lines changed

2 files changed

+31
-34
lines changed

lib/appenders/dateFile.js

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,29 @@ const os = require('os');
33

44
const eol = os.EOL;
55

6+
function openTheStream(filename, pattern, options) {
7+
const stream = new streams.DateRollingFileStream(
8+
filename,
9+
pattern,
10+
options
11+
);
12+
stream.on('error', (err) => {
13+
console.error('log4js.dateFileAppender - Writing to file %s, error happened ', filename, err); //eslint-disable-line
14+
});
15+
stream.on("drain", () => {
16+
process.emit("log4js:pause", false);
17+
});
18+
return stream;
19+
}
20+
621
/**
722
* File appender that rolls files according to a date pattern.
8-
* @filename base filename.
9-
* @pattern the format that will be added to the end of filename when rolling,
23+
* @param filename base filename.
24+
* @param pattern the format that will be added to the end of filename when rolling,
1025
* also used to check when to roll files - defaults to '.yyyy-MM-dd'
11-
* @layout layout function for log messages - defaults to basicLayout
12-
* @timezoneOffset optional timezone offset in minutes - defaults to system local
26+
* @param layout layout function for log messages - defaults to basicLayout
27+
* @param options - options to be passed to the underlying stream
28+
* @param timezoneOffset - optional timezone offset in minutes (default system local)
1329
*/
1430
function appender(
1531
filename,
@@ -22,35 +38,19 @@ function appender(
2238
// options should work for dateFile as well.
2339
options.maxSize = options.maxLogSize;
2440

25-
let alive = true;
26-
27-
const logFile = new streams.DateRollingFileStream(
28-
filename,
29-
pattern,
30-
options
31-
);
32-
33-
logFile.on('error', (err) => {
34-
alive = false;
35-
console.error('log4js.dateFileAppender - Writing to file %s, error happened ', filename, err); //eslint-disable-line
36-
});
37-
logFile.on("drain", () => {
38-
process.emit("log4js:pause", false);
39-
});
41+
const writer = openTheStream(filename, pattern, options);
4042

4143
const app = function (logEvent) {
42-
if (!alive) {
44+
if (!writer.writable) {
4345
return;
4446
}
45-
if (!logFile.write(layout(logEvent, timezoneOffset) + eol, "utf8")) {
47+
if (!writer.write(layout(logEvent, timezoneOffset) + eol, "utf8")) {
4648
process.emit("log4js:pause", true);
4749
}
4850
};
4951

5052
app.shutdown = function (complete) {
51-
logFile.write('', 'utf-8', () => {
52-
logFile.end(complete);
53-
});
53+
writer.end('', 'utf-8', complete);
5454
};
5555

5656
return app;

lib/appenders/file.js

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ function openTheStream(file, fileSize, numFiles, options) {
2020
numFiles,
2121
options
2222
);
23+
stream.on('error', (err) => {
24+
console.error('log4js.fileAppender - Writing to file %s, error happened ', file, err); //eslint-disable-line
25+
});
2326
stream.on('drain', () => {
2427
process.emit("log4js:pause", false);
2528
});
@@ -55,25 +58,19 @@ function fileAppender(file, layout, logSize, numBackups, options, timezoneOffset
5558
timezoneOffset, ')'
5659
);
5760

58-
let alive = true;
59-
6061
let writer = openTheStream(file, logSize, numBackups, options);
61-
writer.on('error', (err) => {
62-
alive = false;
63-
console.error('log4js.fileAppender - Writing to file %s, error happened ', file, err); //eslint-disable-line
64-
});
6562

6663
const app = function (loggingEvent) {
67-
if (!alive) {
64+
if (!writer.writable) {
6865
return;
6966
}
7067
if (options.removeColor === true) {
7168
// eslint-disable-next-line no-control-regex
7269
const regex = /\x1b[[0-9;]*m/g;
7370
loggingEvent.data = loggingEvent.data.map(d => {
74-
if (typeof d === 'string') return d.replace(regex, '')
75-
return d
76-
})
71+
if (typeof d === 'string') return d.replace(regex, '');
72+
return d;
73+
});
7774
}
7875
if (!writer.write(layout(loggingEvent, timezoneOffset) + eol, "utf8")) {
7976
process.emit('log4js:pause', true);

0 commit comments

Comments
 (0)