From 9433b12eac3a528ed63eaf2863c9da89425eb901 Mon Sep 17 00:00:00 2001 From: Aleksandr Nefedov <4eb0da@yandex-team.ru> Date: Mon, 4 Oct 2021 14:55:48 +0300 Subject: [PATCH 1/2] dateFile error handling fix --- lib/appenders/dateFile.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/appenders/dateFile.js b/lib/appenders/dateFile.js index da50ead3..5534dd25 100644 --- a/lib/appenders/dateFile.js +++ b/lib/appenders/dateFile.js @@ -28,6 +28,9 @@ function appender( options ); + logFile.on('error', (err) => { + console.error('log4js.dateFileAppender - Writing to file %s, error happened ', filename, err); //eslint-disable-line + }); logFile.on("drain", () => { process.emit("log4js:pause", false); }); From a3e6363cd9fcf626b15d92b8b0cf21e2f11df558 Mon Sep 17 00:00:00 2001 From: Aleksandr Nefedov <4eb0da@yandex-team.ru> Date: Mon, 4 Oct 2021 18:05:19 +0300 Subject: [PATCH 2/2] dateFile error handling fix 2 --- lib/appenders/dateFile.js | 6 ++++++ lib/appenders/file.js | 12 +++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/appenders/dateFile.js b/lib/appenders/dateFile.js index 5534dd25..608b3c37 100644 --- a/lib/appenders/dateFile.js +++ b/lib/appenders/dateFile.js @@ -22,6 +22,8 @@ function appender( // options should work for dateFile as well. options.maxSize = options.maxLogSize; + let alive = true; + const logFile = new streams.DateRollingFileStream( filename, pattern, @@ -29,6 +31,7 @@ function appender( ); logFile.on('error', (err) => { + alive = false; console.error('log4js.dateFileAppender - Writing to file %s, error happened ', filename, err); //eslint-disable-line }); logFile.on("drain", () => { @@ -36,6 +39,9 @@ function appender( }); const app = function (logEvent) { + if (!alive) { + return; + } if (!logFile.write(layout(logEvent, timezoneOffset) + eol, "utf8")) { process.emit("log4js:pause", true); } diff --git a/lib/appenders/file.js b/lib/appenders/file.js index f2c194b4..7fedafd8 100644 --- a/lib/appenders/file.js +++ b/lib/appenders/file.js @@ -12,9 +12,6 @@ function openTheStream(file, fileSize, numFiles, options) { numFiles, options ); - stream.on('error', (err) => { - console.error('log4js.fileAppender - Writing to file %s, error happened ', file, err); //eslint-disable-line - }); stream.on('drain', () => { process.emit("log4js:pause", false); }); @@ -50,9 +47,18 @@ function fileAppender(file, layout, logSize, numBackups, options, timezoneOffset timezoneOffset, ')' ); + let alive = true; + let writer = openTheStream(file, logSize, numBackups, options); + writer.on('error', (err) => { + alive = false; + console.error('log4js.fileAppender - Writing to file %s, error happened ', file, err); //eslint-disable-line + }); const app = function (loggingEvent) { + if (!alive) { + return; + } if (options.removeColor === true) { // eslint-disable-next-line no-control-regex const regex = /\x1b[[0-9;]*m/g;