Skip to content

Commit d8ff780

Browse files
committed
Optimize code and fix tests
PR-URL: #100
1 parent 3f6118d commit d8ff780

File tree

1 file changed

+25
-30
lines changed

1 file changed

+25
-30
lines changed

metalog.js

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22

33
const fs = require('fs');
4-
const events = require('events');
4+
const { EventEmitter } = require('events');
55
const common = require('@metarhia/common');
66
const { WritableFileStream } = require('metastreams');
77
const concolor = require('concolor');
@@ -108,7 +108,7 @@ class ApplicationLogger {
108108
}
109109
}
110110

111-
class Logger extends events.EventEmitter {
111+
class Logger extends EventEmitter {
112112
// path <string> log directory
113113
// node <string> nodeId
114114
// writeInterval <number> flush log to disk interval
@@ -179,27 +179,26 @@ class Logger extends events.EventEmitter {
179179
this.emit('close');
180180
return;
181181
}
182-
const stream = this.stream;
182+
const { stream } = this;
183183
if (!stream || stream.destroyed || stream.closed) return;
184184
this.flush(err => {
185-
if (err) return;
185+
if (err) {
186+
process.stdout.write(`${err.stack}\n`);
187+
this.emit('error', err);
188+
return;
189+
}
186190
this.active = false;
187-
this.stream.end(() => {
191+
stream.end(() => {
188192
clearInterval(this.flushTimer);
189193
clearTimeout(this.reopenTimer);
190194
this.flushTimer = null;
191195
this.reopenTimer = null;
192196
const fileName = this.file;
193197
this.emit('close');
194198
fs.stat(fileName, (err, stats) => {
195-
if (err) {
196-
process.stdout.write(`${err}\n`);
197-
return;
198-
}
199+
if (err) return;
199200
if (stats.size > 0) return;
200-
fs.unlink(this.file, err => {
201-
process.stdout.write(`${err}\n`);
202-
});
201+
fs.unlink(this.file, () => {});
203202
});
204203
});
205204
});
@@ -209,28 +208,23 @@ class Logger extends events.EventEmitter {
209208
if (!this.keepDays) return;
210209
fs.readdir(this.path, (err, files) => {
211210
if (err) {
212-
process.stdout.write(`${err}\n`);
211+
process.stdout.write(`${err.stack}\n`);
212+
this.emit('error', err);
213213
return;
214214
}
215215
const now = new Date();
216-
const date = new Date(
217-
now.getUTCFullYear(),
218-
now.getUTCMonth(),
219-
now.getUTCDate(),
220-
0,
221-
0,
222-
0,
223-
0
224-
);
216+
const year = now.getUTCFullYear();
217+
const month = now.getUTCMonth();
218+
const day = now.getUTCDate();
219+
const date = new Date(year, month, day, 0, 0, 0, 0);
225220
const time = date.getTime();
226-
let i, fileName, fileTime, fileAge;
227-
for (i in files) {
228-
fileName = files[i];
229-
fileTime = new Date(fileName.substring(0, 10)).getTime();
230-
fileAge = Math.floor((time - fileTime) / DAY_MILLISECONDS);
221+
for (const fileName of files) {
222+
const fileTime = new Date(fileName.substring(0, 10)).getTime();
223+
const fileAge = Math.floor((time - fileTime) / DAY_MILLISECONDS);
231224
if (fileAge > 1 && fileAge > this.keepDays - 1) {
232225
fs.unlink(this.path + '/' + fileName, err => {
233-
process.stdout.write(`${err}\n`);
226+
process.stdout.write(`${err.stack}\n`);
227+
this.emit('error', err);
234228
});
235229
}
236230
}
@@ -268,8 +262,9 @@ class Logger extends events.EventEmitter {
268262
return;
269263
}
270264
if (!this.active) {
271-
if (callback)
272-
callback(new Error('Cannot flush log buffer: logger is not opened'));
265+
const err = new Error('Cannot flush log buffer: logger is not opened');
266+
this.emit('error', err);
267+
if (callback) callback(err);
273268
return;
274269
}
275270
this.lock = true;

0 commit comments

Comments
 (0)