@eggjs/logrotator 4.0.0

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 (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +123 -0
  3. package/README.zh-CN.md +115 -0
  4. package/dist/commonjs/agent.d.ts +2 -0
  5. package/dist/commonjs/agent.js +5 -0
  6. package/dist/commonjs/app/extend/agent.d.ts +5 -0
  7. package/dist/commonjs/app/extend/agent.js +8 -0
  8. package/dist/commonjs/app/extend/application.d.ts +5 -0
  9. package/dist/commonjs/app/extend/application.js +7 -0
  10. package/dist/commonjs/app/schedule/clean_log.d.ts +9 -0
  11. package/dist/commonjs/app/schedule/clean_log.js +74 -0
  12. package/dist/commonjs/app/schedule/rotate_by_file.d.ts +10 -0
  13. package/dist/commonjs/app/schedule/rotate_by_file.js +17 -0
  14. package/dist/commonjs/app/schedule/rotate_by_hour.d.ts +10 -0
  15. package/dist/commonjs/app/schedule/rotate_by_hour.js +17 -0
  16. package/dist/commonjs/app/schedule/rotate_by_size.d.ts +10 -0
  17. package/dist/commonjs/app/schedule/rotate_by_size.js +17 -0
  18. package/dist/commonjs/app.d.ts +2 -0
  19. package/dist/commonjs/app.js +5 -0
  20. package/dist/commonjs/boot.d.ts +6 -0
  21. package/dist/commonjs/boot.js +18 -0
  22. package/dist/commonjs/config/config.default.d.ts +64 -0
  23. package/dist/commonjs/config/config.default.js +16 -0
  24. package/dist/commonjs/index.d.ts +2 -0
  25. package/dist/commonjs/index.js +19 -0
  26. package/dist/commonjs/lib/day_rotator.d.ts +8 -0
  27. package/dist/commonjs/lib/day_rotator.js +89 -0
  28. package/dist/commonjs/lib/hour_rotator.d.ts +6 -0
  29. package/dist/commonjs/lib/hour_rotator.js +46 -0
  30. package/dist/commonjs/lib/rotator.d.ts +16 -0
  31. package/dist/commonjs/lib/rotator.js +78 -0
  32. package/dist/commonjs/lib/size_rotator.d.ts +5 -0
  33. package/dist/commonjs/lib/size_rotator.js +73 -0
  34. package/dist/commonjs/lib/utils.d.ts +11 -0
  35. package/dist/commonjs/lib/utils.js +24 -0
  36. package/dist/commonjs/package.json +3 -0
  37. package/dist/commonjs/types.d.ts +11 -0
  38. package/dist/commonjs/types.js +3 -0
  39. package/dist/esm/agent.d.ts +2 -0
  40. package/dist/esm/agent.js +3 -0
  41. package/dist/esm/app/extend/agent.d.ts +5 -0
  42. package/dist/esm/app/extend/agent.js +6 -0
  43. package/dist/esm/app/extend/application.d.ts +5 -0
  44. package/dist/esm/app/extend/application.js +5 -0
  45. package/dist/esm/app/schedule/clean_log.d.ts +9 -0
  46. package/dist/esm/app/schedule/clean_log.js +69 -0
  47. package/dist/esm/app/schedule/rotate_by_file.d.ts +10 -0
  48. package/dist/esm/app/schedule/rotate_by_file.js +15 -0
  49. package/dist/esm/app/schedule/rotate_by_hour.d.ts +10 -0
  50. package/dist/esm/app/schedule/rotate_by_hour.js +15 -0
  51. package/dist/esm/app/schedule/rotate_by_size.d.ts +10 -0
  52. package/dist/esm/app/schedule/rotate_by_size.js +15 -0
  53. package/dist/esm/app.d.ts +2 -0
  54. package/dist/esm/app.js +3 -0
  55. package/dist/esm/boot.d.ts +6 -0
  56. package/dist/esm/boot.js +14 -0
  57. package/dist/esm/config/config.default.d.ts +64 -0
  58. package/dist/esm/config/config.default.js +14 -0
  59. package/dist/esm/index.d.ts +2 -0
  60. package/dist/esm/index.js +3 -0
  61. package/dist/esm/lib/day_rotator.d.ts +8 -0
  62. package/dist/esm/lib/day_rotator.js +82 -0
  63. package/dist/esm/lib/hour_rotator.d.ts +6 -0
  64. package/dist/esm/lib/hour_rotator.js +39 -0
  65. package/dist/esm/lib/rotator.d.ts +16 -0
  66. package/dist/esm/lib/rotator.js +71 -0
  67. package/dist/esm/lib/size_rotator.d.ts +5 -0
  68. package/dist/esm/lib/size_rotator.js +66 -0
  69. package/dist/esm/lib/utils.d.ts +11 -0
  70. package/dist/esm/lib/utils.js +21 -0
  71. package/dist/esm/package.json +3 -0
  72. package/dist/esm/types.d.ts +11 -0
  73. package/dist/esm/types.js +2 -0
  74. package/dist/package.json +4 -0
  75. package/package.json +101 -0
  76. package/src/agent.ts +3 -0
  77. package/src/app/extend/agent.ts +6 -0
  78. package/src/app/extend/application.ts +5 -0
  79. package/src/app/schedule/clean_log.ts +74 -0
  80. package/src/app/schedule/rotate_by_file.ts +18 -0
  81. package/src/app/schedule/rotate_by_hour.ts +19 -0
  82. package/src/app/schedule/rotate_by_size.ts +18 -0
  83. package/src/app.ts +3 -0
  84. package/src/boot.ts +13 -0
  85. package/src/config/config.default.ts +74 -0
  86. package/src/index.ts +3 -0
  87. package/src/lib/day_rotator.ts +91 -0
  88. package/src/lib/hour_rotator.ts +44 -0
  89. package/src/lib/rotator.ts +88 -0
  90. package/src/lib/size_rotator.ts +67 -0
  91. package/src/lib/utils.ts +26 -0
  92. package/src/types.ts +15 -0
  93. package/src/typings/index.d.ts +4 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2016-present Alibaba Group Holding Limited and other contributors.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,123 @@
1
+ # @eggjs/logrotator
2
+
3
+ [![NPM version][npm-image]][npm-url]
4
+ [![CI](https://github.com/eggjs/logrotator/actions/workflows/nodejs.yml/badge.svg)](https://github.com/eggjs/logrotator/actions/workflows/nodejs.yml)
5
+ [![Test coverage](https://img.shields.io/codecov/c/github/eggjs/logrotator.svg?style=flat-square)](https://codecov.io/gh/eggjs/logrotator)
6
+ [![npm download][download-image]][download-url]
7
+ [![Node.js Version](https://img.shields.io/node/v/@eggjs/logrotator.svg?style=flat)](https://nodejs.org/en/download/)
8
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com)
9
+ ![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/eggjs/security)
10
+
11
+ [npm-image]: https://img.shields.io/npm/v/@eggjs/logrotator.svg?style=flat-square
12
+ [npm-url]: https://npmjs.org/package/@eggjs/logrotator
13
+ [download-image]: https://img.shields.io/npm/dm/@eggjs/logrotator.svg?style=flat-square
14
+ [download-url]: https://npmjs.org/package/@eggjs/logrotator
15
+
16
+ LogRotator for egg. Rotate all file of `app.loggers` by default
17
+
18
+ ## Install
19
+
20
+ ```bash
21
+ npm i @eggjs/logrotator
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ - `plugin.js`
27
+
28
+ ```js
29
+ exports.logrotator = {
30
+ enable: true,
31
+ package: '@eggjs/logrotator',
32
+ };
33
+ ```
34
+
35
+ - `config.default.js`
36
+
37
+ ```js
38
+ // if any files need rotate by file size, config here
39
+ exports.logrotator = {
40
+ filesRotateByHour: [], // list of files that will be rotated by hour
41
+ hourDelimiter: '-', // rotate the file by hour use specified delimiter
42
+ filesRotateBySize: [], // list of files that will be rotated by size
43
+ maxFileSize: 50 * 1024 * 1024, // Max file size to judge if any file need rotate
44
+ maxFiles: 10, // pieces rotate by size
45
+ rotateDuration: 60000, // time interval to judge if any file need rotate
46
+ maxDays: 31, // keep max days log files, default is `31`. Set `0` to keep all logs
47
+ gzip:false, // use gzip compress logger on rotate file, default is `false`. Set `true` to enable
48
+ };
49
+ ```
50
+
51
+ ## Feature
52
+
53
+ By default, LogRotator will rotate all files of `app.loggers` at 00:00 everyday, the format is `.log.YYYY-MM-DD` (`egg-web.log.2016-09-30`).
54
+
55
+ ### By Size
56
+
57
+ Rotate by size with config `filesRotateBySize`. when the file size is greater than `maxFileSize`, it will rename to `.log.1`.
58
+
59
+ If the file you renamed to is exists, it will increment by 1 (`.log.1` -> `.log.2`), until `maxFiles`. if it reaches the `maxFiles`, then overwrite `.log.${maxFiles}`.
60
+
61
+ Files in `filesRotateBySize` won't be rotated by day.
62
+
63
+ If `file` is relative path, then will normalize to `path.join(this.app.config.logger.dir, file)`.
64
+
65
+ ### By Hour
66
+
67
+ Rotate by hour with config `filesRotateByHour`. rotate the file at 00 every hour, the format is `.log.YYYY-MM-DD-HH`.
68
+
69
+ Files in `filesRotateByHour` won't be rotated by day.
70
+
71
+ If `file` is relative path, then will normalize to `path.join(this.app.config.logger.dir, file)`.
72
+
73
+ ## Customize
74
+
75
+ You can use `app.LogRotator` to customize.
76
+
77
+ ```js
78
+ // app/schedule/custom.js
79
+ module.exports = app => {
80
+ const rotator = getRotator(app);
81
+ return {
82
+ // https://github.com/eggjs/egg-schedule
83
+ schedule: {
84
+ type: 'worker', // only one worker run this task
85
+ cron: '10 * * * *', // custom cron, or use interval
86
+ },
87
+ async task() {
88
+ await rotator.rotate();
89
+ }
90
+ };
91
+ };
92
+
93
+ function getRotator(app) {
94
+ class CustomRotator extends app.LogRotator {
95
+ // return map that contains a pair of srcPath and targetPath
96
+ // LogRotator will rename ksrcPath to targetPath
97
+ async getRotateFiles() {
98
+ const files = new Map();
99
+ const srcPath = '/home/admin/foo.log';
100
+ const targetPath = '/home/admin/foo.log.2016.09.30';
101
+ files.set(srcPath, { srcPath, targetPath });
102
+ return files;
103
+ }
104
+ }
105
+ return new CustomRotator({ app });
106
+ }
107
+ ```
108
+
109
+ Define a method called `getRotateFiles`, return a map contains a pair of srcPath and targetPath.
110
+
111
+ ## Questions & Suggestions
112
+
113
+ Please open an issue [here](https://github.com/eggjs/egg/issues).
114
+
115
+ ## License
116
+
117
+ [MIT](LICENSE)
118
+
119
+ ## Contributors
120
+
121
+ [![Contributors](https://contrib.rocks/image?repo=eggjs/logrotator)](https://github.com/eggjs/logrotator/graphs/contributors)
122
+
123
+ Made with [contributors-img](https://contrib.rocks).
@@ -0,0 +1,115 @@
1
+ # @eggjs/logrotator
2
+
3
+ [![NPM version][npm-image]][npm-url]
4
+ [![CI](https://github.com/eggjs/logrotator/actions/workflows/nodejs.yml/badge.svg)](https://github.com/eggjs/logrotator/actions/workflows/nodejs.yml)
5
+ [![Test coverage](https://img.shields.io/codecov/c/github/eggjs/logrotator.svg?style=flat-square)](https://codecov.io/gh/eggjs/logrotator)
6
+ [![npm download][download-image]][download-url]
7
+ [![Node.js Version](https://img.shields.io/node/v/@eggjs/logrotator.svg?style=flat)](https://nodejs.org/en/download/)
8
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com)
9
+ ![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/eggjs/security)
10
+
11
+ [npm-image]: https://img.shields.io/npm/v/@eggjs/logrotator.svg?style=flat-square
12
+ [npm-url]: https://npmjs.org/package/@eggjs/logrotator
13
+ [download-image]: https://img.shields.io/npm/dm/@eggjs/logrotator.svg?style=flat-square
14
+ [download-url]: https://npmjs.org/package/@eggjs/logrotator
15
+
16
+ egg 的日志切割插件,默认会按照时间切割所有的 app.loggers。
17
+
18
+ ## 配置
19
+
20
+ - `plugin.js`
21
+
22
+ ```js
23
+ exports.logrotator = true;
24
+ ```
25
+
26
+ - `config.default.js`
27
+
28
+ ```js
29
+ // 如果有需要按照文件大小切割的日志,在这里配置
30
+ exports.logrotator = {
31
+ filesRotateByHour: [], // 需要按小时切割的文件
32
+ hourDelimiter: '-', // 按照小时切割的文件, 小时部分的分隔符.
33
+ filesRotateBySize: [], // 需要按大小切割的文件,其他日志文件仍按照通常方式切割
34
+ maxFileSize: 50 * 1024 * 1024, // 最大文件大小,默认为50m
35
+ maxFiles: 10, // 按大小切割时,文件最大切割的份数
36
+ rotateDuration: 60000, // 按大小切割时,文件扫描的间隔时间
37
+ maxDays: 31, // 日志保留最久天数
38
+ };
39
+ ```
40
+
41
+ ## 功能说明
42
+
43
+ logrotator 默认在每日0点按照时间切割,会将 app.loggers 下所有的 logger 都进行切割,格式为 `.log.YYYY-MM-DD`,如 `egg-web.log.2016-09-30`。
44
+
45
+ ### 按大小切割
46
+
47
+ 可以配置 `filesRotateBySize` 文件列表按大小切割,当文件大于 `maxFileSize` 时进行切割,格式为 `.log.1`。
48
+
49
+ 当已有切割文件时会将原文件自增 1,如 `.log.1` -> `.log.2`。当切割分数大于 `maxFiles` 时会覆盖最后一份。
50
+
51
+ 配置了这个功能的文件不会再按默认切割。
52
+
53
+ 如配置为相对路径,则默认会转换为 `path.join(this.app.config.logger.dir, file)`。
54
+
55
+ ### 按小时切割
56
+
57
+ 可以配置 `filesRotateBySize` 文件列表按小时切割,每小时0分开始切割,格式为 `.log.YYYY-MM-DD-HH`。
58
+
59
+ 配置了这个功能的文件不会再按默认切割。
60
+
61
+ 如配置为相对路径,则默认会转换为 `path.join(this.app.config.logger.dir, file)`。
62
+
63
+ ## 自定义
64
+
65
+ 你可以使用 `app.LogRotator` 来自定义切割。
66
+
67
+ ```js
68
+ // app/schedule/custom.js
69
+ module.exports = app => {
70
+ const rotator = getRotator(app);
71
+ return {
72
+ // https://github.com/eggjs/egg-schedule
73
+ schedule: {
74
+ type: 'worker', // only one worker run this task
75
+ cron: '10 * * * *', // custom cron, or use interval
76
+ },
77
+ * task() {
78
+ yield rotator.rotate();
79
+ }
80
+ };
81
+ };
82
+
83
+ function getRotator(app) {
84
+ class CustomRotator extends app.LogRotator {
85
+ // return map that contains a pair of srcPath and targetPath
86
+ // LogRotator will rename srcPath to targetPath
87
+ // 返回一个 map,其中包含 srcPath 和 targetPath,
88
+ // LogRotator 会将 srcPath 重命名成 targetPath
89
+ * getRotateFiles() {
90
+ const files = new Map();
91
+ const srcPath = '/home/admin/foo.log';
92
+ const targetPath = '/home/admin/foo.log.2016.09.30';
93
+ files.set(srcPath, { srcPath, targetPath });
94
+ return files;
95
+ }
96
+ }
97
+ return new CustomRotator({ app });
98
+ }
99
+ ```
100
+
101
+ 你只需要定义一个 getRotateFiles 方法,指定重命名的 map。
102
+
103
+ ## Questions & Suggestions
104
+
105
+ Please open an issue [here](https://github.com/eggjs/egg/issues).
106
+
107
+ ## License
108
+
109
+ [MIT](LICENSE)
110
+
111
+ ## Contributors
112
+
113
+ [![Contributors](https://contrib.rocks/image?repo=eggjs/logrotator)](https://github.com/eggjs/logrotator/graphs/contributors)
114
+
115
+ Made with [contributors-img](https://contrib.rocks).
@@ -0,0 +1,2 @@
1
+ import { Boot } from './boot.js';
2
+ export default Boot;
@@ -0,0 +1,5 @@
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=
@@ -0,0 +1,5 @@
1
+ import { LogRotator } from '../../lib/rotator.js';
2
+ declare const _default: {
3
+ LogRotator: typeof LogRotator;
4
+ };
5
+ export default _default;
@@ -0,0 +1,8 @@
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=
@@ -0,0 +1,5 @@
1
+ import { LogRotator } from '../../lib/rotator.js';
2
+ declare const _default: {
3
+ LogRotator: typeof LogRotator;
4
+ };
5
+ export default _default;
@@ -0,0 +1,7 @@
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==
@@ -0,0 +1,9 @@
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;
@@ -0,0 +1,74 @@
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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
@@ -0,0 +1,10 @@
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;
@@ -0,0 +1,17 @@
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==
@@ -0,0 +1,10 @@
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;
@@ -0,0 +1,17 @@
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=
@@ -0,0 +1,10 @@
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;
@@ -0,0 +1,17 @@
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==
@@ -0,0 +1,2 @@
1
+ import { Boot } from './boot.js';
2
+ export default Boot;
@@ -0,0 +1,5 @@
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==
@@ -0,0 +1,6 @@
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
+ }
@@ -0,0 +1,18 @@
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=
@@ -0,0 +1,64 @@
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;
@@ -0,0 +1,16 @@
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=
@@ -0,0 +1,2 @@
1
+ import './types.js';
2
+ export * from './lib/rotator.js';
@@ -0,0 +1,19 @@
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==
@@ -0,0 +1,8 @@
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
+ }