metalog 3.1.12 → 3.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/metalog.d.ts +1 -0
  2. package/metalog.js +7 -4
  3. package/package.json +17 -15
package/metalog.d.ts CHANGED
@@ -27,6 +27,7 @@ export class Logger extends EventEmitter {
27
27
  flushTimer: NodeJS.Timer;
28
28
  lock: boolean;
29
29
  buffer: Array<Buffer>;
30
+ bufferLength: number;
30
31
  file: string;
31
32
  toFile: Record<string, boolean>;
32
33
  fsEnabled: boolean;
package/metalog.js CHANGED
@@ -47,7 +47,7 @@ const DEFAULT_FLAGS = {
47
47
  error: false,
48
48
  };
49
49
 
50
- const logTypes = (types = LOG_TYPES) => {
50
+ const logTypes = (types) => {
51
51
  const flags = { ...DEFAULT_FLAGS };
52
52
  for (const type of types) {
53
53
  flags[type] = true;
@@ -188,7 +188,7 @@ class Logger extends events.EventEmitter {
188
188
  super();
189
189
  const { workerId = 0, createStream = fs.createWriteStream } = args;
190
190
  const { writeInterval, writeBuffer, keepDays, home, json } = args;
191
- const { toFile = [], toStdout = [] } = args;
191
+ const { toFile = LOG_TYPES, toStdout = LOG_TYPES } = args;
192
192
  this.active = false;
193
193
  this.path = args.path;
194
194
  this.workerId = `W${workerId}`;
@@ -203,6 +203,7 @@ class Logger extends events.EventEmitter {
203
203
  this.flushTimer = null;
204
204
  this.lock = false;
205
205
  this.buffer = [];
206
+ this.bufferLength = 0;
206
207
  this.file = '';
207
208
  this.toFile = logTypes(toFile);
208
209
  this.fsEnabled = toFile.length !== 0;
@@ -246,8 +247,7 @@ class Logger extends events.EventEmitter {
246
247
  });
247
248
  }, nextReopen);
248
249
  if (this.keepDays) await this.rotate();
249
- const options = { flags: 'a', bufferSize: this.writeBuffer };
250
- this.stream = this.createStream(this.file, options);
250
+ this.stream = this.createStream(this.file, { flags: 'a' });
251
251
  this.flushTimer = setInterval(() => {
252
252
  this.flush();
253
253
  }, this.writeInterval);
@@ -371,6 +371,8 @@ class Logger extends events.EventEmitter {
371
371
  : this.formatFile(type, indent, ...args);
372
372
  const buffer = Buffer.from(line + '\n');
373
373
  this.buffer.push(buffer);
374
+ this.bufferLength += buffer.length;
375
+ if (this.bufferLength >= this.writeBuffer) this.flush();
374
376
  }
375
377
  }
376
378
 
@@ -392,6 +394,7 @@ class Logger extends events.EventEmitter {
392
394
  this.lock = true;
393
395
  const buffer = Buffer.concat(this.buffer);
394
396
  this.buffer.length = 0;
397
+ this.bufferLength = 0;
395
398
  this.stream.write(buffer, () => {
396
399
  this.lock = false;
397
400
  this.emit('unlocked');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "metalog",
3
- "version": "3.1.12",
3
+ "version": "3.1.14",
4
4
  "author": "Timur Shemsedinov <timur.shemsedinov@gmail.com>",
5
5
  "description": "Logger for Metarhia",
6
6
  "license": "MIT",
@@ -24,7 +24,7 @@
24
24
  ],
25
25
  "repository": {
26
26
  "type": "git",
27
- "url": "https://github.com/metarhia/metalog"
27
+ "url": "git+https://github.com/metarhia/metalog.git"
28
28
  },
29
29
  "bugs": {
30
30
  "url": "https://github.com/metarhia/metalog/issues",
@@ -38,29 +38,31 @@
38
38
  "main": "metalog.js",
39
39
  "types": "metalog.d.ts",
40
40
  "readmeFilename": "README.md",
41
- "files": ["types/", "metalog.d.ts"],
41
+ "files": [
42
+ "types/",
43
+ "metalog.d.ts"
44
+ ],
42
45
  "scripts": {
43
- "test": "npm run lint && npm run types && metatests test/",
46
+ "test": "npm run lint && npm run types && node --test",
44
47
  "types": "tsc -p tsconfig.json",
45
48
  "lint": "eslint . && prettier --check \"**/*.js\" \"**/*.json\" \"**/*.md\" \"**/.*rc\" \"**/*.ts\"",
46
49
  "fmt": "prettier --write \"**/*.js\" \"**/*.json\" \"**/*.md\" \"**/.*rc\" \"**/*.ts\""
47
50
  },
48
51
  "engines": {
49
- "node": "16 || 18 || 19 || 20"
52
+ "node": "18 || 20 || 21"
50
53
  },
51
54
  "dependencies": {
52
- "concolor": "^1.0.6",
53
- "metautil": "^3.10.0"
55
+ "concolor": "^1.1.0",
56
+ "metautil": "^5.0.0"
54
57
  },
55
58
  "devDependencies": {
56
- "@types/node": "^20.4.1",
57
- "eslint": "^8.44.0",
58
- "eslint-config-metarhia": "^8.2.0",
59
- "eslint-config-prettier": "^8.7.0",
60
- "eslint-plugin-import": "^2.27.5",
59
+ "@types/node": "^20.10.4",
60
+ "eslint": "^8.55.0",
61
+ "eslint-config-metarhia": "^8.2.2",
62
+ "eslint-config-prettier": "^9.1.0",
63
+ "eslint-plugin-import": "^2.29.0",
61
64
  "eslint-plugin-prettier": "^5.0.0-alpha.2",
62
- "metatests": "^0.8.2",
63
- "prettier": "^3.0.0",
64
- "typescript": "^5.1.6"
65
+ "prettier": "^3.1.1",
66
+ "typescript": "^5.3.3"
65
67
  }
66
68
  }