From 0d3148d3c157e77da7a2a6fc7dbea6e4442a6cef Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Tue, 17 Oct 2023 19:29:01 +0300 Subject: [PATCH] Added flush logs on buffer size condition PR-URL: https://github.com/metarhia/metalog/pull/233 --- metalog.d.ts | 1 + metalog.js | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/metalog.d.ts b/metalog.d.ts index 355d7e6..9ff2fb1 100644 --- a/metalog.d.ts +++ b/metalog.d.ts @@ -27,6 +27,7 @@ export class Logger extends EventEmitter { flushTimer: NodeJS.Timer; lock: boolean; buffer: Array; + bufferLength: number; file: string; toFile: Record; fsEnabled: boolean; diff --git a/metalog.js b/metalog.js index 7fc41ae..b51835b 100644 --- a/metalog.js +++ b/metalog.js @@ -203,6 +203,7 @@ class Logger extends events.EventEmitter { this.flushTimer = null; this.lock = false; this.buffer = []; + this.bufferLength = 0; this.file = ''; this.toFile = logTypes(toFile); this.fsEnabled = toFile.length !== 0; @@ -246,8 +247,7 @@ class Logger extends events.EventEmitter { }); }, nextReopen); if (this.keepDays) await this.rotate(); - const options = { flags: 'a', bufferSize: this.writeBuffer }; - this.stream = this.createStream(this.file, options); + this.stream = this.createStream(this.file, { flags: 'a' }); this.flushTimer = setInterval(() => { this.flush(); }, this.writeInterval); @@ -371,6 +371,8 @@ class Logger extends events.EventEmitter { : this.formatFile(type, indent, ...args); const buffer = Buffer.from(line + '\n'); this.buffer.push(buffer); + this.bufferLength += buffer.length; + if (this.bufferLength >= this.writeBuffer) this.flush(); } } @@ -392,6 +394,7 @@ class Logger extends events.EventEmitter { this.lock = true; const buffer = Buffer.concat(this.buffer); this.buffer.length = 0; + this.bufferLength = 0; this.stream.write(buffer, () => { this.lock = false; this.emit('unlocked');