@eggjs/logrotator 4.0.0 → 5.0.0-beta.15

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 (123) hide show
  1. package/README.md +10 -12
  2. package/README.zh-CN.md +11 -13
  3. package/dist/agent.d.ts +2 -0
  4. package/dist/agent.js +7 -0
  5. package/dist/app/extend/agent.d.ts +13 -0
  6. package/dist/app/extend/agent.js +7 -0
  7. package/dist/app/extend/application.d.ts +13 -0
  8. package/dist/app/extend/application.js +7 -0
  9. package/dist/app/schedule/clean_log.d.ts +12 -0
  10. package/dist/app/schedule/clean_log.js +60 -0
  11. package/dist/app/schedule/rotate_by_file.d.ts +13 -0
  12. package/dist/app/schedule/rotate_by_file.js +19 -0
  13. package/dist/app/schedule/rotate_by_hour.d.ts +13 -0
  14. package/dist/app/schedule/rotate_by_hour.js +19 -0
  15. package/dist/app/schedule/rotate_by_size.d.ts +13 -0
  16. package/dist/app/schedule/rotate_by_size.js +19 -0
  17. package/dist/app.d.ts +2 -0
  18. package/dist/app.js +7 -0
  19. package/dist/boot.d.ts +10 -0
  20. package/dist/boot.js +16 -0
  21. package/{src/config/config.default.ts → dist/config/config.default.d.ts} +11 -14
  22. package/dist/config/config.default.js +15 -0
  23. package/dist/index.d.ts +2 -0
  24. package/dist/index.js +5 -0
  25. package/dist/lib/day_rotator.d.ts +12 -0
  26. package/dist/lib/day_rotator.js +64 -0
  27. package/dist/lib/hour_rotator.d.ts +10 -0
  28. package/dist/lib/hour_rotator.js +38 -0
  29. package/dist/lib/rotator.d.ts +20 -0
  30. package/dist/lib/rotator.js +56 -0
  31. package/dist/lib/size_rotator.d.ts +9 -0
  32. package/dist/lib/size_rotator.js +61 -0
  33. package/dist/lib/utils.d.ts +12 -0
  34. package/dist/lib/utils.js +15 -0
  35. package/package.json +52 -68
  36. package/dist/commonjs/agent.d.ts +0 -2
  37. package/dist/commonjs/agent.js +0 -5
  38. package/dist/commonjs/app/extend/agent.d.ts +0 -5
  39. package/dist/commonjs/app/extend/agent.js +0 -8
  40. package/dist/commonjs/app/extend/application.d.ts +0 -5
  41. package/dist/commonjs/app/extend/application.js +0 -7
  42. package/dist/commonjs/app/schedule/clean_log.d.ts +0 -9
  43. package/dist/commonjs/app/schedule/clean_log.js +0 -74
  44. package/dist/commonjs/app/schedule/rotate_by_file.d.ts +0 -10
  45. package/dist/commonjs/app/schedule/rotate_by_file.js +0 -17
  46. package/dist/commonjs/app/schedule/rotate_by_hour.d.ts +0 -10
  47. package/dist/commonjs/app/schedule/rotate_by_hour.js +0 -17
  48. package/dist/commonjs/app/schedule/rotate_by_size.d.ts +0 -10
  49. package/dist/commonjs/app/schedule/rotate_by_size.js +0 -17
  50. package/dist/commonjs/app.d.ts +0 -2
  51. package/dist/commonjs/app.js +0 -5
  52. package/dist/commonjs/boot.d.ts +0 -6
  53. package/dist/commonjs/boot.js +0 -18
  54. package/dist/commonjs/config/config.default.d.ts +0 -64
  55. package/dist/commonjs/config/config.default.js +0 -16
  56. package/dist/commonjs/index.d.ts +0 -2
  57. package/dist/commonjs/index.js +0 -19
  58. package/dist/commonjs/lib/day_rotator.d.ts +0 -8
  59. package/dist/commonjs/lib/day_rotator.js +0 -89
  60. package/dist/commonjs/lib/hour_rotator.d.ts +0 -6
  61. package/dist/commonjs/lib/hour_rotator.js +0 -46
  62. package/dist/commonjs/lib/rotator.d.ts +0 -16
  63. package/dist/commonjs/lib/rotator.js +0 -78
  64. package/dist/commonjs/lib/size_rotator.d.ts +0 -5
  65. package/dist/commonjs/lib/size_rotator.js +0 -73
  66. package/dist/commonjs/lib/utils.d.ts +0 -11
  67. package/dist/commonjs/lib/utils.js +0 -24
  68. package/dist/commonjs/package.json +0 -3
  69. package/dist/commonjs/types.d.ts +0 -11
  70. package/dist/commonjs/types.js +0 -3
  71. package/dist/esm/agent.d.ts +0 -2
  72. package/dist/esm/agent.js +0 -3
  73. package/dist/esm/app/extend/agent.d.ts +0 -5
  74. package/dist/esm/app/extend/agent.js +0 -6
  75. package/dist/esm/app/extend/application.d.ts +0 -5
  76. package/dist/esm/app/extend/application.js +0 -5
  77. package/dist/esm/app/schedule/clean_log.d.ts +0 -9
  78. package/dist/esm/app/schedule/clean_log.js +0 -69
  79. package/dist/esm/app/schedule/rotate_by_file.d.ts +0 -10
  80. package/dist/esm/app/schedule/rotate_by_file.js +0 -15
  81. package/dist/esm/app/schedule/rotate_by_hour.d.ts +0 -10
  82. package/dist/esm/app/schedule/rotate_by_hour.js +0 -15
  83. package/dist/esm/app/schedule/rotate_by_size.d.ts +0 -10
  84. package/dist/esm/app/schedule/rotate_by_size.js +0 -15
  85. package/dist/esm/app.d.ts +0 -2
  86. package/dist/esm/app.js +0 -3
  87. package/dist/esm/boot.d.ts +0 -6
  88. package/dist/esm/boot.js +0 -14
  89. package/dist/esm/config/config.default.d.ts +0 -64
  90. package/dist/esm/config/config.default.js +0 -14
  91. package/dist/esm/index.d.ts +0 -2
  92. package/dist/esm/index.js +0 -3
  93. package/dist/esm/lib/day_rotator.d.ts +0 -8
  94. package/dist/esm/lib/day_rotator.js +0 -82
  95. package/dist/esm/lib/hour_rotator.d.ts +0 -6
  96. package/dist/esm/lib/hour_rotator.js +0 -39
  97. package/dist/esm/lib/rotator.d.ts +0 -16
  98. package/dist/esm/lib/rotator.js +0 -71
  99. package/dist/esm/lib/size_rotator.d.ts +0 -5
  100. package/dist/esm/lib/size_rotator.js +0 -66
  101. package/dist/esm/lib/utils.d.ts +0 -11
  102. package/dist/esm/lib/utils.js +0 -21
  103. package/dist/esm/package.json +0 -3
  104. package/dist/esm/types.d.ts +0 -11
  105. package/dist/esm/types.js +0 -2
  106. package/dist/package.json +0 -4
  107. package/src/agent.ts +0 -3
  108. package/src/app/extend/agent.ts +0 -6
  109. package/src/app/extend/application.ts +0 -5
  110. package/src/app/schedule/clean_log.ts +0 -74
  111. package/src/app/schedule/rotate_by_file.ts +0 -18
  112. package/src/app/schedule/rotate_by_hour.ts +0 -19
  113. package/src/app/schedule/rotate_by_size.ts +0 -18
  114. package/src/app.ts +0 -3
  115. package/src/boot.ts +0 -13
  116. package/src/index.ts +0 -3
  117. package/src/lib/day_rotator.ts +0 -91
  118. package/src/lib/hour_rotator.ts +0 -44
  119. package/src/lib/rotator.ts +0 -88
  120. package/src/lib/size_rotator.ts +0 -67
  121. package/src/lib/utils.ts +0 -26
  122. package/src/types.ts +0 -15
  123. package/src/typings/index.d.ts +0 -4
@@ -0,0 +1,9 @@
1
+ import { LogRotator, RotateFile } from "./rotator.js";
2
+
3
+ //#region src/lib/size_rotator.d.ts
4
+ declare class SizeRotator extends LogRotator {
5
+ getRotateFiles(): Promise<Map<string, RotateFile>>;
6
+ _setFile(logPath: string, files: Map<string, RotateFile>): void;
7
+ }
8
+ //#endregion
9
+ export { SizeRotator };
@@ -0,0 +1,61 @@
1
+ import { LogRotator } from "./rotator.js";
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 };
@@ -0,0 +1,12 @@
1
+ //#region src/lib/utils.d.ts
2
+ interface LoggerTransport {
3
+ options: {
4
+ file: string;
5
+ };
6
+ }
7
+ /**
8
+ * Walk all logger files from loggers
9
+ */
10
+ declare function walkLoggerFile(loggers: Record<string, Map<string, LoggerTransport>>): string[];
11
+ //#endregion
12
+ export { walkLoggerFile };
@@ -0,0 +1,15 @@
1
+ //#region src/lib/utils.ts
2
+ /**
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;
12
+ }
13
+
14
+ //#endregion
15
+ export { walkLoggerFile };
package/package.json CHANGED
@@ -1,20 +1,12 @@
1
1
  {
2
2
  "name": "@eggjs/logrotator",
3
- "version": "4.0.0",
4
- "publishConfig": {
5
- "access": "public"
6
- },
3
+ "version": "5.0.0-beta.15",
7
4
  "description": "logrotator for egg",
8
5
  "eggPlugin": {
9
6
  "name": "logrotator",
10
7
  "dependencies": [
11
8
  "schedule"
12
- ],
13
- "exports": {
14
- "import": "./dist/esm",
15
- "require": "./dist/commonjs",
16
- "typescript": "./src"
17
- }
9
+ ]
18
10
  },
19
11
  "keywords": [
20
12
  "egg",
@@ -25,77 +17,69 @@
25
17
  ],
26
18
  "repository": {
27
19
  "type": "git",
28
- "url": "git+https://github.com/eggjs/logrotator.git"
20
+ "url": "git@github.com:eggjs/egg.git",
21
+ "directory": "plugins/logrotator"
29
22
  },
30
23
  "bugs": {
31
24
  "url": "https://github.com/eggjs/egg/issues"
32
25
  },
33
- "homepage": "https://github.com/eggjs/logrotator#readme",
26
+ "homepage": "https://github.com/eggjs/egg/tree/next/plugins/logrotator#readme",
34
27
  "author": "tianyi.jiangty",
35
28
  "license": "MIT",
36
29
  "engines": {
37
- "node": ">= 18.19.0"
30
+ "node": ">= 22.18.0"
31
+ },
32
+ "type": "module",
33
+ "exports": {
34
+ ".": "./dist/index.js",
35
+ "./agent": "./dist/agent.js",
36
+ "./app": "./dist/app.js",
37
+ "./app/extend/agent": "./dist/app/extend/agent.js",
38
+ "./app/extend/application": "./dist/app/extend/application.js",
39
+ "./app/schedule/clean_log": "./dist/app/schedule/clean_log.js",
40
+ "./app/schedule/rotate_by_file": "./dist/app/schedule/rotate_by_file.js",
41
+ "./app/schedule/rotate_by_hour": "./dist/app/schedule/rotate_by_hour.js",
42
+ "./app/schedule/rotate_by_size": "./dist/app/schedule/rotate_by_size.js",
43
+ "./boot": "./dist/boot.js",
44
+ "./config/config.default": "./dist/config/config.default.js",
45
+ "./lib/day_rotator": "./dist/lib/day_rotator.js",
46
+ "./lib/hour_rotator": "./dist/lib/hour_rotator.js",
47
+ "./lib/rotator": "./dist/lib/rotator.js",
48
+ "./lib/size_rotator": "./dist/lib/size_rotator.js",
49
+ "./lib/utils": "./dist/lib/utils.js",
50
+ "./package.json": "./package.json"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
38
54
  },
39
55
  "dependencies": {
40
- "@eggjs/core": "^6.2.13",
41
56
  "moment": "^2.30.1",
42
57
  "utility": "^2.5.0"
43
58
  },
44
- "devDependencies": {
45
- "@arethetypeswrong/cli": "^0.17.3",
46
- "@eggjs/bin": "7",
47
- "@eggjs/mock": "^6.0.5",
48
- "@eggjs/tsconfig": "1",
49
- "@types/mocha": "10",
50
- "@types/node": "22",
51
- "egg": "^4.0.5",
52
- "egg-logger": "^3.6.1",
53
- "eslint": "8",
54
- "eslint-config-egg": "14",
55
- "glob": "^11.0.1",
56
- "rimraf": "6",
57
- "snap-shot-it": "^7.9.10",
58
- "supertest": "^6.3.3",
59
- "tshy": "3",
60
- "tshy-after": "1",
61
- "typescript": "5"
62
- },
63
- "scripts": {
64
- "lint": "eslint --cache src test --ext .ts",
65
- "pretest": "npm run clean && npm run lint -- --fix",
66
- "test": "egg-bin test",
67
- "test:snapshot:update": "SNAPSHOT_UPDATE=1 egg-bin test",
68
- "preci": "npm run clean && npm run lint",
69
- "ci": "egg-bin cov",
70
- "postci": "npm run prepublishOnly && npm run clean",
71
- "clean": "rimraf dist",
72
- "prepublishOnly": "tshy && tshy-after && attw --pack"
73
- },
74
- "type": "module",
75
- "tshy": {
76
- "exports": {
77
- ".": "./src/index.ts",
78
- "./package.json": "./package.json"
79
- }
59
+ "peerDependencies": {
60
+ "egg": "4.1.0-beta.15"
80
61
  },
81
- "exports": {
82
- ".": {
83
- "import": {
84
- "types": "./dist/esm/index.d.ts",
85
- "default": "./dist/esm/index.js"
86
- },
87
- "require": {
88
- "types": "./dist/commonjs/index.d.ts",
89
- "default": "./dist/commonjs/index.js"
90
- }
91
- },
92
- "./package.json": "./package.json"
62
+ "devDependencies": {
63
+ "@types/node": "24.5.2",
64
+ "egg-logger": "^3.5.0",
65
+ "glob": "^11.0.0",
66
+ "tsdown": "^0.15.4",
67
+ "typescript": "5.9.2",
68
+ "vitest": "4.0.0-beta.13",
69
+ "@eggjs/mock": "7.0.0-beta.15",
70
+ "@eggjs/schedule": "6.0.0-beta.15",
71
+ "@eggjs/tsconfig": "3.1.0-beta.15"
93
72
  },
94
73
  "files": [
95
- "dist",
96
- "src"
74
+ "dist"
97
75
  ],
98
- "types": "./dist/commonjs/index.d.ts",
99
- "main": "./dist/commonjs/index.js",
100
- "module": "./dist/esm/index.js"
101
- }
76
+ "main": "./dist/index.js",
77
+ "module": "./dist/index.js",
78
+ "types": "./dist/index.d.ts",
79
+ "scripts": {
80
+ "build": "tsdown",
81
+ "typecheck": "tsc --noEmit",
82
+ "lint": "oxlint --type-aware",
83
+ "test": "vitest run"
84
+ }
85
+ }
@@ -1,2 +0,0 @@
1
- import { Boot } from './boot.js';
2
- export default Boot;
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const boot_js_1 = require("./boot.js");
4
- exports.default = boot_js_1.Boot;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBaUM7QUFFakMsa0JBQWUsY0FBSSxDQUFDIn0=
@@ -1,5 +0,0 @@
1
- import { LogRotator } from '../../lib/rotator.js';
2
- declare const _default: {
3
- LogRotator: typeof LogRotator;
4
- };
5
- export default _default;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const rotator_js_1 = require("../../lib/rotator.js");
4
- // egg-schedule will load both at app and agent, so we should mount it for compatible
5
- exports.default = {
6
- LogRotator: rotator_js_1.LogRotator,
7
- };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFrRDtBQUVsRCxxRkFBcUY7QUFDckYsa0JBQWU7SUFDYixVQUFVLEVBQVYsdUJBQVU7Q0FDWCxDQUFDIn0=
@@ -1,5 +0,0 @@
1
- import { LogRotator } from '../../lib/rotator.js';
2
- declare const _default: {
3
- LogRotator: typeof LogRotator;
4
- };
5
- export default _default;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const rotator_js_1 = require("../../lib/rotator.js");
4
- exports.default = {
5
- LogRotator: rotator_js_1.LogRotator,
6
- };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFrRDtBQUVsRCxrQkFBZTtJQUNiLFVBQVUsRUFBVix1QkFBVTtDQUNYLENBQUMifQ==
@@ -1,9 +0,0 @@
1
- import { EggCore } from '@eggjs/core';
2
- declare const _default: (app: EggCore) => {
3
- schedule: {
4
- type: string;
5
- cron: string;
6
- };
7
- task(): Promise<void>;
8
- };
9
- export default _default;
@@ -1,74 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_path_1 = __importDefault(require("node:path"));
7
- const promises_1 = __importDefault(require("node:fs/promises"));
8
- const utility_1 = require("utility");
9
- const moment_1 = __importDefault(require("moment"));
10
- const utils_js_1 = require("../../lib/utils.js");
11
- // clean all xxx.log.YYYY-MM-DD before expired date.
12
- exports.default = (app) => ({
13
- schedule: {
14
- type: 'worker', // only one worker run this task
15
- cron: '0 0 * * *', // run every day at 00:00
16
- },
17
- async task() {
18
- const logger = app.coreLogger;
19
- const logDirs = new Set();
20
- const loggerFiles = (0, utils_js_1.walkLoggerFile)(app.loggers);
21
- loggerFiles.forEach(file => {
22
- const logDir = node_path_1.default.dirname(file);
23
- logDirs.add(logDir);
24
- });
25
- const maxDays = app.config.logrotator.maxDays;
26
- if (maxDays && maxDays > 0) {
27
- try {
28
- const tasks = Array.from(logDirs, logDir => removeExpiredLogFiles(logDir, maxDays, logger));
29
- await Promise.all(tasks);
30
- }
31
- catch (err) {
32
- logger.error(err);
33
- }
34
- }
35
- logger.info('[@eggjs/logrotator] clean all log before %s days', maxDays);
36
- },
37
- });
38
- // remove expired log files: xxx.log.YYYY-MM-DD
39
- async function removeExpiredLogFiles(logDir, maxDays, logger) {
40
- // ignore not exists dir
41
- const stat = await (0, utility_1.exists)(logDir);
42
- if (!stat) {
43
- logger.warn(`[@eggjs/logrotator] logDir ${logDir} not exists`);
44
- return;
45
- }
46
- const files = await promises_1.default.readdir(logDir);
47
- const expiredDate = (0, moment_1.default)().subtract(maxDays, 'days').startOf('date');
48
- const names = files.filter(file => {
49
- const name = node_path_1.default.extname(file).substring(1);
50
- if (!/^\d{4}\-\d{2}\-\d{2}/.test(name)) {
51
- return false;
52
- }
53
- const date = (0, moment_1.default)(name, 'YYYY-MM-DD').startOf('date');
54
- if (!date.isValid()) {
55
- return false;
56
- }
57
- return date.isBefore(expiredDate);
58
- });
59
- if (names.length === 0) {
60
- return;
61
- }
62
- logger.info(`[@eggjs/logrotator] start remove ${logDir} files: ${names.join(', ')}`);
63
- await Promise.all(names.map(async (name) => {
64
- const logFile = node_path_1.default.join(logDir, name);
65
- try {
66
- await promises_1.default.unlink(logFile);
67
- }
68
- catch (err) {
69
- err.message = `[@eggjs/logrotator] remove logFile ${logFile} error, ${err.message}`;
70
- logger.error(err);
71
- }
72
- }));
73
- }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW5fbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9zY2hlZHVsZS9jbGVhbl9sb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBNkI7QUFDN0IsZ0VBQWtDO0FBQ2xDLHFDQUFpQztBQUNqQyxvREFBNEI7QUFFNUIsaURBQW9EO0FBRXBELG9EQUFvRDtBQUNwRCxrQkFBZSxDQUFDLEdBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoQyxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsUUFBUSxFQUFFLGdDQUFnQztRQUNoRCxJQUFJLEVBQUUsV0FBVyxFQUFFLHlCQUF5QjtLQUM3QztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQWMsRUFBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxtQkFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQzlDLElBQUksT0FBTyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxD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
@@ -1,10 +0,0 @@
1
- import { EggCore } from '@eggjs/core';
2
- declare const _default: (app: EggCore) => {
3
- schedule: {
4
- type: string;
5
- cron: string;
6
- disable: boolean;
7
- };
8
- task(): Promise<void>;
9
- };
10
- export default _default;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const day_rotator_js_1 = require("../../lib/day_rotator.js");
4
- exports.default = (app) => {
5
- const rotator = new day_rotator_js_1.DayRotator({ app });
6
- return {
7
- schedule: {
8
- type: 'worker', // only one worker run this task
9
- cron: '1 0 0 * * *', // run every day at 00:00
10
- disable: app.config.logrotator.disableRotateByDay,
11
- },
12
- async task() {
13
- await rotator.rotate();
14
- },
15
- };
16
- };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlX2J5X2ZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3NjaGVkdWxlL3JvdGF0ZV9ieV9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsNkRBQXNEO0FBRXRELGtCQUFlLENBQUMsR0FBWSxFQUFFLEVBQUU7SUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSwyQkFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUV4QyxPQUFPO1FBQ0wsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQ0FBZ0M7WUFDaEQsSUFBSSxFQUFFLGFBQWEsRUFBRSx5QkFBeUI7WUFDOUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQjtTQUNsRDtRQUVELEtBQUssQ0FBQyxJQUFJO1lBQ1IsTUFBTSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -1,10 +0,0 @@
1
- import { EggCore } from '@eggjs/core';
2
- declare const _default: (app: EggCore) => {
3
- schedule: {
4
- type: string;
5
- cron: string;
6
- disable: boolean;
7
- };
8
- task(): Promise<void>;
9
- };
10
- export default _default;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const hour_rotator_js_1 = require("../../lib/hour_rotator.js");
4
- exports.default = (app) => {
5
- const rotator = new hour_rotator_js_1.HourRotator({ app });
6
- return {
7
- schedule: {
8
- type: 'worker', // only one worker run this task
9
- cron: '1 * * * *', // run every hour at 01
10
- disable: (app.config.logrotator.filesRotateByHour || []).length === 0,
11
- },
12
- async task() {
13
- await rotator.rotate();
14
- },
15
- };
16
- };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlX2J5X2hvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3NjaGVkdWxlL3JvdGF0ZV9ieV9ob3VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsK0RBQXdEO0FBRXhELGtCQUFlLENBQUMsR0FBWSxFQUFFLEVBQUU7SUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSw2QkFBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUV6QyxPQUFPO1FBQ0wsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQ0FBZ0M7WUFDaEQsSUFBSSxFQUFFLFdBQVcsRUFBRSx1QkFBdUI7WUFDMUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7U0FDdEU7UUFFRCxLQUFLLENBQUMsSUFBSTtZQUNSLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLENBQUM7S0FFRixDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -1,10 +0,0 @@
1
- import { EggCore } from '@eggjs/core';
2
- declare const _default: (app: EggCore) => {
3
- schedule: {
4
- type: string;
5
- interval: number;
6
- disable: boolean;
7
- };
8
- task(): Promise<void>;
9
- };
10
- export default _default;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const size_rotator_js_1 = require("../../lib/size_rotator.js");
4
- exports.default = (app) => {
5
- const rotator = new size_rotator_js_1.SizeRotator({ app });
6
- return {
7
- schedule: {
8
- type: 'worker',
9
- interval: app.config.logrotator.rotateDuration,
10
- disable: (app.config.logrotator.filesRotateBySize || []).length === 0,
11
- },
12
- async task() {
13
- await rotator.rotate();
14
- },
15
- };
16
- };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlX2J5X3NpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3NjaGVkdWxlL3JvdGF0ZV9ieV9zaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsK0RBQXdEO0FBRXhELGtCQUFlLENBQUMsR0FBWSxFQUFFLEVBQUU7SUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSw2QkFBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUV6QyxPQUFPO1FBQ0wsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYztZQUM5QyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQztTQUN0RTtRQUVELEtBQUssQ0FBQyxJQUFJO1lBQ1IsTUFBTSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -1,2 +0,0 @@
1
- import { Boot } from './boot.js';
2
- export default Boot;
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const boot_js_1 = require("./boot.js");
4
- exports.default = boot_js_1.Boot;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVDQUFpQztBQUVqQyxrQkFBZSxjQUFJLENBQUMifQ==
@@ -1,6 +0,0 @@
1
- import type { EggCore, ILifecycleBoot } from '@eggjs/core';
2
- export declare class Boot implements ILifecycleBoot {
3
- private readonly app;
4
- constructor(app: EggCore);
5
- didLoad(): Promise<void>;
6
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Boot = void 0;
4
- class Boot {
5
- app;
6
- constructor(app) {
7
- this.app = app;
8
- }
9
- async didLoad() {
10
- // reload logger to new fd after rotating
11
- this.app.messenger.on('log-reload', () => {
12
- this.app.loggers.reload();
13
- this.app.coreLogger.info('[@eggjs/logrotator] %s logger reload: got log-reload message', this.app.type);
14
- });
15
- }
16
- }
17
- exports.Boot = Boot;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ib290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQWEsSUFBSTtJQUNjO0lBQTdCLFlBQTZCLEdBQVk7UUFBWixRQUFHLEdBQUgsR0FBRyxDQUFTO0lBQUcsQ0FBQztJQUU3QyxLQUFLLENBQUMsT0FBTztRQUNYLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsOERBQThELEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVZELG9CQVVDIn0=
@@ -1,64 +0,0 @@
1
- /**
2
- * logrotator options
3
- * @member Config#logrotator
4
- */
5
- export interface LogrotatorConfig {
6
- /**
7
- * Disable rotate by day
8
- *
9
- * Default: `false`
10
- */
11
- disableRotateByDay: boolean;
12
- /**
13
- * List of files that will be rotated by hour
14
- *
15
- * Default: `null`
16
- */
17
- filesRotateByHour: string[] | null;
18
- /**
19
- * Hour delimiter
20
- *
21
- * Default: `-`
22
- */
23
- hourDelimiter: string;
24
- /**
25
- * List of files that will be rotated by size
26
- *
27
- * Default: `null`
28
- */
29
- filesRotateBySize: string[] | null;
30
- /**
31
- * Max file size to judge if any file need rotate
32
- *
33
- * Default: `50 * 1024 * 1024`
34
- */
35
- maxFileSize: number;
36
- /**
37
- * Max files to keep
38
- *
39
- * Default: `10`
40
- */
41
- maxFiles: number;
42
- /**
43
- * Time interval to judge if any file need rotate
44
- *
45
- * Default: `60000`
46
- */
47
- rotateDuration: number;
48
- /**
49
- * Max days to keep log files, set `0` to keep all logs.
50
- *
51
- * Default: `31`
52
- */
53
- maxDays: number;
54
- /**
55
- * Enable gzip compression for rotated files
56
- *
57
- * Default: `false`
58
- */
59
- gzip: boolean;
60
- }
61
- declare const _default: {
62
- logrotator: LogrotatorConfig;
63
- };
64
- export default _default;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- logrotator: {
5
- disableRotateByDay: false,
6
- filesRotateByHour: null,
7
- hourDelimiter: '-',
8
- filesRotateBySize: null,
9
- maxFileSize: 50 * 1024 * 1024,
10
- maxFiles: 10,
11
- rotateDuration: 60000,
12
- maxDays: 31,
13
- gzip: false,
14
- },
15
- };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNkRBLGtCQUFlO0lBQ2IsVUFBVSxFQUFFO1FBQ1Ysa0JBQWtCLEVBQUUsS0FBSztRQUN6QixpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGFBQWEsRUFBRSxHQUFHO1FBQ2xCLGlCQUFpQixFQUFFLElBQUk7UUFDdkIsV0FBVyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSTtRQUM3QixRQUFRLEVBQUUsRUFBRTtRQUNaLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsSUFBSSxFQUFFLEtBQUs7S0FDUTtDQUN0QixDQUFDIn0=
@@ -1,2 +0,0 @@
1
- import './types.js';
2
- export * from './lib/rotator.js';
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- require("./types.js");
18
- __exportStar(require("./lib/rotator.js"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNCQUFvQjtBQUVwQixtREFBaUMifQ==
@@ -1,8 +0,0 @@
1
- import { LogRotator, RotateFile, RotatorOptions } from './rotator.js';
2
- export declare class DayRotator extends LogRotator {
3
- private filesRotateBySize;
4
- private filesRotateByHour;
5
- constructor(options: RotatorOptions);
6
- getRotateFiles(): Promise<Map<string, RotateFile>>;
7
- _setFile(srcPath: string, files: Map<string, RotateFile>): void;
8
- }