@eggjs/logrotator 5.0.0-beta.34 → 5.0.0-beta.36

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.
@@ -1,67 +1,61 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { debuglog } from 'node:util';
4
- import { exists } from 'utility';
5
1
  import { LogRotator } from "./rotator.js";
6
- const debug = debuglog('egg/logrotator/lib/size_rotator');
7
- // rotate log by size, if the size of file over maxFileSize,
8
- // it will rename from foo.log to foo.log.1
9
- // if foo.log.1 exists, foo.log.1 will rename to foo.log.2
10
- export class SizeRotator extends LogRotator {
11
- async getRotateFiles() {
12
- const files = new Map();
13
- const logDir = this.app.config.logger.dir;
14
- const filesRotateBySize = this.app.config.logrotator.filesRotateBySize ?? [];
15
- const maxFileSize = this.app.config.logrotator.maxFileSize;
16
- const maxFiles = this.app.config.logrotator.maxFiles;
17
- for (let logPath of filesRotateBySize) {
18
- // support relative path
19
- if (!path.isAbsolute(logPath)) {
20
- logPath = path.join(logDir, logPath);
21
- }
22
- const stat = await exists(logPath);
23
- if (!stat) {
24
- continue;
25
- }
26
- const size = stat.size;
27
- try {
28
- if (size >= maxFileSize) {
29
- this.logger.info(`[@eggjs/logrotator] file ${logPath} reach the maximum file size, current size: ${size}, max size: ${maxFileSize}`);
30
- // delete max log file if exists, otherwise will throw when rename
31
- const maxFileName = `${logPath}.${maxFiles}`;
32
- const stat = await exists(maxFileName);
33
- if (stat) {
34
- await fs.unlink(maxFileName);
35
- this.logger.info(`[@eggjs/logrotator] delete max log file ${maxFileName}`);
36
- }
37
- this._setFile(logPath, files);
38
- }
39
- }
40
- catch (e) {
41
- const err = e;
42
- err.message = `[@eggjs/logrotator] ${err.message}`;
43
- this.logger.error(err);
44
- }
45
- }
46
- return files;
47
- }
48
- _setFile(logPath, files) {
49
- const maxFiles = this.app.config.logrotator.maxFiles;
50
- if (files.has(logPath)) {
51
- return;
52
- }
53
- const ext = this.app.config.logrotator.gzip === true ? '.gz' : '';
54
- // foo.log.2 -> foo.log.3
55
- // foo.log.1 -> foo.log.2
56
- for (let i = maxFiles - 1; i >= 1; i--) {
57
- const srcPath = `${logPath}.${i}`;
58
- const targetPath = `${logPath}.${i + 1}${ext}`;
59
- debug('set file %s => %s', srcPath, targetPath);
60
- files.set(srcPath, { srcPath, targetPath });
61
- }
62
- // foo.log -> foo.log.1
63
- debug('set file %s => %s', logPath, `${logPath}.1`);
64
- files.set(logPath, { srcPath: logPath, targetPath: `${logPath}.1${ext}` });
65
- }
66
- }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZV9yb3RhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9zaXplX3JvdGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVqQyxPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUUzRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUUxRCw0REFBNEQ7QUFDNUQsMkNBQTJDO0FBQzNDLDBEQUEwRDtBQUMxRCxNQUFNLE9BQU8sV0FBWSxTQUFRLFVBQVU7SUFDekMsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUMxQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDN0UsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUMzRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3JELEtBQUssSUFBSSxPQUFPLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0Qyx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztn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
2
+ import fs from "node:fs/promises";
3
+ import { debuglog } from "node:util";
4
+ import { exists } from "utility";
5
+ import path from "node:path";
6
+
7
+ //#region src/lib/size_rotator.ts
8
+ const debug = debuglog("egg/logrotator/lib/size_rotator");
9
+ var SizeRotator = class extends LogRotator {
10
+ async getRotateFiles() {
11
+ const files = /* @__PURE__ */ new Map();
12
+ const logDir = this.app.config.logger.dir;
13
+ const filesRotateBySize = this.app.config.logrotator.filesRotateBySize ?? [];
14
+ const maxFileSize = this.app.config.logrotator.maxFileSize;
15
+ const maxFiles = this.app.config.logrotator.maxFiles;
16
+ for (let logPath of filesRotateBySize) {
17
+ if (!path.isAbsolute(logPath)) logPath = path.join(logDir, logPath);
18
+ const stat = await exists(logPath);
19
+ if (!stat) continue;
20
+ const size = stat.size;
21
+ try {
22
+ if (size >= maxFileSize) {
23
+ this.logger.info(`[@eggjs/logrotator] file ${logPath} reach the maximum file size, current size: ${size}, max size: ${maxFileSize}`);
24
+ const maxFileName = `${logPath}.${maxFiles}`;
25
+ if (await exists(maxFileName)) {
26
+ await fs.unlink(maxFileName);
27
+ this.logger.info(`[@eggjs/logrotator] delete max log file ${maxFileName}`);
28
+ }
29
+ this._setFile(logPath, files);
30
+ }
31
+ } catch (e) {
32
+ const err = e;
33
+ err.message = `[@eggjs/logrotator] ${err.message}`;
34
+ this.logger.error(err);
35
+ }
36
+ }
37
+ return files;
38
+ }
39
+ _setFile(logPath, files) {
40
+ const maxFiles = this.app.config.logrotator.maxFiles;
41
+ if (files.has(logPath)) return;
42
+ const ext = this.app.config.logrotator.gzip === true ? ".gz" : "";
43
+ for (let i = maxFiles - 1; i >= 1; i--) {
44
+ const srcPath = `${logPath}.${i}`;
45
+ const targetPath = `${logPath}.${i + 1}${ext}`;
46
+ debug("set file %s => %s", srcPath, targetPath);
47
+ files.set(srcPath, {
48
+ srcPath,
49
+ targetPath
50
+ });
51
+ }
52
+ debug("set file %s => %s", logPath, `${logPath}.1`);
53
+ files.set(logPath, {
54
+ srcPath: logPath,
55
+ targetPath: `${logPath}.1${ext}`
56
+ });
57
+ }
58
+ };
59
+
60
+ //#endregion
61
+ export { SizeRotator };
@@ -1,10 +1,12 @@
1
+ //#region src/lib/utils.d.ts
1
2
  interface LoggerTransport {
2
- options: {
3
- file: string;
4
- };
3
+ options: {
4
+ file: string;
5
+ };
5
6
  }
6
7
  /**
7
- * Walk all logger files from loggers
8
- */
9
- export declare function walkLoggerFile(loggers: Record<string, Map<string, LoggerTransport>>): string[];
10
- export {};
8
+ * Walk all logger files from loggers
9
+ */
10
+ declare function walkLoggerFile(loggers: Record<string, Map<string, LoggerTransport>>): string[];
11
+ //#endregion
12
+ export { walkLoggerFile };
package/dist/lib/utils.js CHANGED
@@ -1,16 +1,15 @@
1
+ //#region src/lib/utils.ts
1
2
  /**
2
- * Walk all logger files from loggers
3
- */
4
- export function walkLoggerFile(loggers) {
5
- const files = [];
6
- for (const registeredLogger of Object.values(loggers)) {
7
- for (const transport of registeredLogger.values()) {
8
- const file = transport.options.file;
9
- if (file) {
10
- files.push(file);
11
- }
12
- }
13
- }
14
- return files;
3
+ * Walk all logger files from loggers
4
+ */
5
+ function walkLoggerFile(loggers) {
6
+ const files = [];
7
+ for (const registeredLogger of Object.values(loggers)) for (const transport of registeredLogger.values()) {
8
+ const file = transport.options.file;
9
+ if (file) files.push(file);
10
+ }
11
+ return files;
15
12
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFxRDtJQUNsRixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsS0FBSyxNQUFNLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxLQUFLLE1BQU0sU0FBUyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDcEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyJ9
13
+
14
+ //#endregion
15
+ export { walkLoggerFile };
package/dist/types.d.ts CHANGED
@@ -1,17 +1,19 @@
1
- import type { LogrotatorConfig } from './config/config.default.ts';
2
- import type { LogRotator } from './lib/rotator.ts';
3
- declare module 'egg' {
4
- interface EggAppConfig {
5
- /**
6
- * logrotator options
7
- * @member Config#logrotator
8
- */
9
- logrotator: LogrotatorConfig;
10
- }
11
- interface Agent {
12
- LogRotator: typeof LogRotator;
13
- }
14
- interface Application {
15
- LogRotator: typeof LogRotator;
16
- }
17
- }
1
+ import { LogRotator } from "./lib/rotator.js";
2
+ import { LogrotatorConfig } from "./config/config.default.js";
3
+
4
+ //#region src/types.d.ts
5
+ declare module "egg" {
6
+ interface EggAppConfig {
7
+ /**
8
+ * logrotator options
9
+ * @member Config#logrotator
10
+ */
11
+ logrotator: LogrotatorConfig;
12
+ }
13
+ interface Agent {
14
+ LogRotator: typeof LogRotator;
15
+ }
16
+ interface Application {
17
+ LogRotator: typeof LogRotator;
18
+ }
19
+ }
package/dist/types.js CHANGED
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
1
+ export { };
package/package.json CHANGED
@@ -1,29 +1,32 @@
1
1
  {
2
2
  "name": "@eggjs/logrotator",
3
- "version": "5.0.0-beta.34",
3
+ "version": "5.0.0-beta.36",
4
4
  "description": "logrotator for egg",
5
5
  "keywords": [
6
6
  "egg",
7
- "eggPlugin",
8
7
  "egg-plugin",
8
+ "eggPlugin",
9
9
  "logger",
10
10
  "logrotator"
11
11
  ],
12
- "repository": {
13
- "type": "git",
14
- "url": "git://github.com/eggjs/egg.git",
15
- "directory": "plugins/logrotator"
16
- },
12
+ "homepage": "https://github.com/eggjs/egg/tree/next/plugins/logrotator#readme",
17
13
  "bugs": {
18
14
  "url": "https://github.com/eggjs/egg/issues"
19
15
  },
20
- "homepage": "https://github.com/eggjs/egg/tree/next/plugins/logrotator#readme",
21
- "author": "tianyi.jiangty",
22
16
  "license": "MIT",
23
- "engines": {
24
- "node": ">= 22.18.0"
17
+ "author": "tianyi.jiangty",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/eggjs/egg.git",
21
+ "directory": "plugins/logrotator"
25
22
  },
23
+ "files": [
24
+ "dist"
25
+ ],
26
26
  "type": "module",
27
+ "main": "./dist/index.js",
28
+ "module": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
27
30
  "exports": {
28
31
  ".": "./dist/index.js",
29
32
  "./agent": "./dist/agent.js",
@@ -51,31 +54,22 @@
51
54
  "moment": "^2.30.1",
52
55
  "utility": "^2.5.0"
53
56
  },
54
- "peerDependencies": {
55
- "egg": "4.1.0-beta.34"
56
- },
57
57
  "devDependencies": {
58
- "@types/node": "^24.9.1",
58
+ "@types/node": "^24.10.2",
59
59
  "egg-logger": "^3.5.0",
60
60
  "glob": "^11.0.0",
61
- "tsdown": "0.15.11",
62
61
  "typescript": "^5.9.3",
63
- "vitest": "4.0.5",
64
- "@eggjs/mock": "7.0.0-beta.34",
65
- "@eggjs/schedule": "6.0.0-beta.34",
66
- "egg": "4.1.0-beta.34",
67
- "@eggjs/tsconfig": "3.1.0-beta.34"
62
+ "@eggjs/mock": "7.0.0-beta.36",
63
+ "@eggjs/schedule": "6.0.0-beta.36",
64
+ "egg": "4.1.0-beta.36"
65
+ },
66
+ "peerDependencies": {
67
+ "egg": "4.1.0-beta.36"
68
+ },
69
+ "engines": {
70
+ "node": ">= 22.18.0"
68
71
  },
69
- "files": [
70
- "dist"
71
- ],
72
- "main": "./dist/index.js",
73
- "module": "./dist/index.js",
74
- "types": "./dist/index.d.ts",
75
72
  "scripts": {
76
- "build": "tsdown && rimraf dist *.tsbuildinfo && tsc -p tsconfig.build.json",
77
- "typecheck": "tsc --noEmit",
78
- "lint": "oxlint --type-aware",
79
- "test": "vitest run"
73
+ "typecheck": "tsgo --noEmit"
80
74
  }
81
75
  }