@eggjs/logrotator 5.0.0-beta.19 → 5.0.0-beta.21

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,12 +1,8 @@
1
- import { LogRotator, RotateFile, RotatorOptions } from "./rotator.js";
2
-
3
- //#region src/lib/day_rotator.d.ts
4
- declare class DayRotator extends LogRotator {
5
- private filesRotateBySize;
6
- private filesRotateByHour;
7
- constructor(options: RotatorOptions);
8
- getRotateFiles(): Promise<Map<string, RotateFile>>;
9
- _setFile(srcPath: string, files: Map<string, RotateFile>): void;
1
+ import { LogRotator, type RotateFile, type RotatorOptions } from './rotator.ts';
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;
10
8
  }
11
- //#endregion
12
- export { DayRotator };
@@ -1,64 +1,80 @@
1
+ import path from 'node:path';
2
+ import moment from 'moment';
3
+ import fs from 'node:fs/promises';
4
+ import { debuglog } from 'node:util';
5
+ import { exists } from 'utility';
1
6
  import { LogRotator } from "./rotator.js";
2
7
  import { walkLoggerFile } from "./utils.js";
3
- import fs from "node:fs/promises";
4
- import { debuglog } from "node:util";
5
- import { exists } from "utility";
6
- import path from "node:path";
7
- import moment from "moment";
8
-
9
- //#region src/lib/day_rotator.ts
10
- const debug = debuglog("egg/logrotator/lib/day_rotator");
11
- var DayRotator = class extends LogRotator {
12
- filesRotateBySize;
13
- filesRotateByHour;
14
- constructor(options) {
15
- super(options);
16
- this.filesRotateBySize = this.app.config.logrotator.filesRotateBySize ?? [];
17
- this.filesRotateByHour = this.app.config.logrotator.filesRotateByHour ?? [];
18
- }
19
- async getRotateFiles() {
20
- const files = /* @__PURE__ */ new Map();
21
- const logDir = this.app.config.logger.dir;
22
- const loggers = this.app.loggers;
23
- const loggerFiles = walkLoggerFile(loggers);
24
- for (let file of loggerFiles) {
25
- if (!path.isAbsolute(file)) file = path.join(logDir, file);
26
- this._setFile(file, files);
27
- }
28
- const agentLogName = this.app.config.logger.agentLogName;
29
- this._setFile(path.join(logDir, agentLogName), files);
30
- const rotateLogDirs = this.app.config.logger.rotateLogDirs;
31
- if (rotateLogDirs && rotateLogDirs.length > 0) {
32
- this.app.deprecate("[@eggjs/logrotator] Do not use app.config.logger.rotateLogDirs, only rotate core loggers and custom loggers");
33
- for (const dir of rotateLogDirs) {
34
- if (!await exists(dir)) continue;
35
- try {
36
- const names = await fs.readdir(dir);
37
- for (const name of names) {
38
- if (!name.endsWith(".log")) continue;
39
- this._setFile(path.join(dir, name), files);
40
- }
41
- } catch (err) {
42
- this.logger.error(err);
43
- }
44
- }
45
- }
46
- return files;
47
- }
48
- _setFile(srcPath, files) {
49
- if (this.filesRotateBySize.includes(srcPath)) return;
50
- if (this.filesRotateByHour.includes(srcPath)) return;
51
- if (!files.has(srcPath)) {
52
- const ext = this.app.config.logrotator.gzip === true ? ".gz" : "";
53
- const targetPath = srcPath + moment().subtract(23, "hours").subtract(58, "minutes").format(".YYYY-MM-DD") + ext;
54
- debug("set file %s => %s", srcPath, targetPath);
55
- files.set(srcPath, {
56
- srcPath,
57
- targetPath
58
- });
59
- }
60
- }
61
- };
62
-
63
- //#endregion
64
- export { DayRotator };
8
+ const debug = debuglog('egg/logrotator/lib/day_rotator');
9
+ // rotate log by day
10
+ // rename from foo.log to foo.log.YYYY-MM-DD
11
+ export class DayRotator extends LogRotator {
12
+ filesRotateBySize;
13
+ filesRotateByHour;
14
+ constructor(options) {
15
+ super(options);
16
+ this.filesRotateBySize = this.app.config.logrotator.filesRotateBySize ?? [];
17
+ this.filesRotateByHour = this.app.config.logrotator.filesRotateByHour ?? [];
18
+ }
19
+ async getRotateFiles() {
20
+ const files = new Map();
21
+ const logDir = this.app.config.logger.dir;
22
+ const loggers = this.app.loggers;
23
+ const loggerFiles = walkLoggerFile(loggers);
24
+ for (let file of loggerFiles) {
25
+ // support relative path
26
+ if (!path.isAbsolute(file)) {
27
+ file = path.join(logDir, file);
28
+ }
29
+ this._setFile(file, files);
30
+ }
31
+ // Should rotate agent log, because schedule is running under app worker,
32
+ // agent log is the only difference between app worker and agent worker.
33
+ // - app worker -> egg-web.log
34
+ // - agent worker -> egg-agent.log
35
+ const agentLogName = this.app.config.logger.agentLogName;
36
+ this._setFile(path.join(logDir, agentLogName), files);
37
+ // rotateLogDirs is deprecated
38
+ // @ts-expect-error rotateLogDirs is not typed
39
+ const rotateLogDirs = this.app.config.logger.rotateLogDirs;
40
+ if (rotateLogDirs && rotateLogDirs.length > 0) {
41
+ this.app.deprecate('[@eggjs/logrotator] Do not use app.config.logger.rotateLogDirs, only rotate core loggers and custom loggers');
42
+ for (const dir of rotateLogDirs) {
43
+ const stat = await exists(dir);
44
+ if (!stat)
45
+ continue;
46
+ try {
47
+ const names = await fs.readdir(dir);
48
+ for (const name of names) {
49
+ if (!name.endsWith('.log')) {
50
+ continue;
51
+ }
52
+ this._setFile(path.join(dir, name), files);
53
+ }
54
+ }
55
+ catch (err) {
56
+ this.logger.error(err);
57
+ }
58
+ }
59
+ }
60
+ return files;
61
+ }
62
+ _setFile(srcPath, files) {
63
+ // don't rotate logPath in filesRotateBySize
64
+ if (this.filesRotateBySize.includes(srcPath)) {
65
+ return;
66
+ }
67
+ // don't rotate logPath in filesRotateByHour
68
+ if (this.filesRotateByHour.includes(srcPath)) {
69
+ return;
70
+ }
71
+ if (!files.has(srcPath)) {
72
+ const ext = this.app.config.logrotator.gzip === true ? '.gz' : '';
73
+ // allow 2 minutes deviation
74
+ const targetPath = srcPath + moment().subtract(23, 'hours').subtract(58, 'minutes').format('.YYYY-MM-DD') + ext;
75
+ debug('set file %s => %s', srcPath, targetPath);
76
+ files.set(srcPath, { srcPath, targetPath });
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5X3JvdGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2RheV9yb3RhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWpDLE9BQU8sRUFBRSxVQUFVLEVBQXdDLE1BQU0sY0FBYyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFFekQsb0JBQW9CO0FBQ3BCLDRDQUE0QztBQUM1QyxNQUFNLE9BQU8sVUFBVyxTQUFRLFVBQVU7SUFDaEMsaUJBQWlCLENBQVc7SUFDNUIsaUJBQWlCLENBQVc7SUFFcEMsWUFBWSxPQUF1QjtRQUNqQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUM1RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUMxQyxNQUFN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
@@ -1,10 +1,6 @@
1
- import { LogRotator, RotateFile } from "./rotator.js";
2
-
3
- //#region src/lib/hour_rotator.d.ts
4
- declare class HourRotator extends LogRotator {
5
- getRotateFiles(): Promise<Map<string, RotateFile>>;
6
- get hourDelimiter(): string;
7
- _setFile(srcPath: string, files: Map<string, RotateFile>): void;
1
+ import { LogRotator, type RotateFile } from './rotator.ts';
2
+ export declare class HourRotator extends LogRotator {
3
+ getRotateFiles(): Promise<Map<string, RotateFile>>;
4
+ get hourDelimiter(): string;
5
+ _setFile(srcPath: string, files: Map<string, RotateFile>): void;
8
6
  }
9
- //#endregion
10
- export { HourRotator };
@@ -1,38 +1,39 @@
1
+ import moment from 'moment';
2
+ import path from 'node:path';
3
+ import { debuglog } from 'node:util';
4
+ import { exists } from 'utility';
1
5
  import { LogRotator } from "./rotator.js";
2
- import { debuglog } from "node:util";
3
- import { exists } from "utility";
4
- import path from "node:path";
5
- import moment from "moment";
6
-
7
- //#region src/lib/hour_rotator.ts
8
- const debug = debuglog("egg/logrotator/lib/hour_rotator");
9
- var HourRotator = class extends LogRotator {
10
- async getRotateFiles() {
11
- const files = /* @__PURE__ */ new Map();
12
- const logDir = this.app.config.logger.dir;
13
- const filesRotateByHour = this.app.config.logrotator.filesRotateByHour ?? [];
14
- for (let logPath of filesRotateByHour) {
15
- if (!path.isAbsolute(logPath)) logPath = path.join(logDir, logPath);
16
- if (!await exists(logPath)) continue;
17
- this._setFile(logPath, files);
18
- }
19
- return files;
20
- }
21
- get hourDelimiter() {
22
- return this.app.config.logrotator.hourDelimiter;
23
- }
24
- _setFile(srcPath, files) {
25
- if (!files.has(srcPath)) {
26
- const ext = this.app.config.logrotator.gzip === true ? ".gz" : "";
27
- const targetPath = srcPath + moment().subtract(1, "hours").format(`.YYYY-MM-DD${this.hourDelimiter}HH`) + ext;
28
- debug("set file %s => %s", srcPath, targetPath);
29
- files.set(srcPath, {
30
- srcPath,
31
- targetPath
32
- });
33
- }
34
- }
35
- };
36
-
37
- //#endregion
38
- export { HourRotator };
6
+ const debug = debuglog('egg/logrotator/lib/hour_rotator');
7
+ // rotate log by hour
8
+ // rename from foo.log to foo.log.YYYY-MM-DD-HH
9
+ export class HourRotator extends LogRotator {
10
+ async getRotateFiles() {
11
+ const files = new Map();
12
+ const logDir = this.app.config.logger.dir;
13
+ const filesRotateByHour = this.app.config.logrotator.filesRotateByHour ?? [];
14
+ for (let logPath of filesRotateByHour) {
15
+ // support relative path
16
+ if (!path.isAbsolute(logPath)) {
17
+ logPath = path.join(logDir, logPath);
18
+ }
19
+ const stat = await exists(logPath);
20
+ if (!stat) {
21
+ continue;
22
+ }
23
+ this._setFile(logPath, files);
24
+ }
25
+ return files;
26
+ }
27
+ get hourDelimiter() {
28
+ return this.app.config.logrotator.hourDelimiter;
29
+ }
30
+ _setFile(srcPath, files) {
31
+ if (!files.has(srcPath)) {
32
+ const ext = this.app.config.logrotator.gzip === true ? '.gz' : '';
33
+ const targetPath = srcPath + moment().subtract(1, 'hours').format(`.YYYY-MM-DD${this.hourDelimiter}HH`) + ext;
34
+ debug('set file %s => %s', srcPath, targetPath);
35
+ files.set(srcPath, { srcPath, targetPath });
36
+ }
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91cl9yb3RhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9ob3VyX3JvdGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFakMsT0FBTyxFQUFFLFVBQVUsRUFBbUIsTUFBTSxjQUFjLENBQUM7QUFFM0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFFMUQscUJBQXFCO0FBQ3JCLCtDQUErQztBQUMvQyxNQUFNLE9BQU8sV0FBWSxTQUFRLFVBQVU7SUFDekMsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUMxQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFFN0UsS0FBSyxJQUFJLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RDLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixTQUFTO1lBQ1gsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLEVBQUUsS0FBOEI7UUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzlHLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
@@ -1,20 +1,16 @@
1
- import { Application } from "egg";
2
-
3
- //#region src/lib/rotator.d.ts
4
- interface RotatorOptions {
5
- app: Application;
1
+ import type { Application } from 'egg';
2
+ export interface RotatorOptions {
3
+ app: Application;
6
4
  }
7
- interface RotateFile {
8
- srcPath: string;
9
- targetPath: string;
5
+ export interface RotateFile {
6
+ srcPath: string;
7
+ targetPath: string;
10
8
  }
11
- declare abstract class LogRotator {
12
- protected readonly options: RotatorOptions;
13
- protected readonly app: Application;
14
- protected readonly logger: Application['coreLogger'];
15
- constructor(options: RotatorOptions);
16
- abstract getRotateFiles(): Promise<Map<string, RotateFile>>;
17
- rotate(): Promise<void>;
9
+ export declare abstract class LogRotator {
10
+ protected readonly options: RotatorOptions;
11
+ protected readonly app: Application;
12
+ protected readonly logger: Application['coreLogger'];
13
+ constructor(options: RotatorOptions);
14
+ abstract getRotateFiles(): Promise<Map<string, RotateFile>>;
15
+ rotate(): Promise<void>;
18
16
  }
19
- //#endregion
20
- export { LogRotator, RotateFile, RotatorOptions };
@@ -1,56 +1,73 @@
1
- import assert from "node:assert";
2
- import { createReadStream, createWriteStream } from "node:fs";
3
- import fs from "node:fs/promises";
4
- import { pipeline } from "node:stream/promises";
5
- import { createGzip } from "node:zlib";
6
- import { debuglog } from "node:util";
7
- import { exists } from "utility";
8
-
9
- //#region src/lib/rotator.ts
10
- const debug = debuglog("egg/logrotator/lib/rotator");
11
- var LogRotator = class {
12
- options;
13
- app;
14
- logger;
15
- constructor(options) {
16
- this.options = options;
17
- assert(this.options.app, "options.app is required");
18
- this.app = this.options.app;
19
- this.logger = this.app.coreLogger;
20
- }
21
- async rotate() {
22
- const files = await this.getRotateFiles();
23
- assert(files instanceof Map, "getRotateFiles should return a Map");
24
- const rotatedFiles = [];
25
- for (const file of files.values()) try {
26
- debug("rename from %s to %s", file.srcPath, file.targetPath);
27
- await renameOrDelete(file.srcPath, file.targetPath, this.app.config.logrotator.gzip);
28
- rotatedFiles.push(`${file.srcPath} -> ${file.targetPath}`);
29
- } catch (e) {
30
- const err = e;
31
- err.message = `[@eggjs/logrotator] rename ${file.srcPath}, found exception: ${err.message}`;
32
- this.logger.error(err);
33
- }
34
- if (rotatedFiles.length > 0) {
35
- debug("broadcast log-reload, rotated files: %j", rotatedFiles);
36
- this.logger.info("[@eggjs/logrotator] broadcast log-reload");
37
- this.app.messenger.sendToApp("log-reload");
38
- this.app.messenger.sendToAgent("log-reload");
39
- }
40
- this.logger.info("[@eggjs/logrotator] rotate files success by %s, files %j", this.constructor.name, rotatedFiles);
41
- }
42
- };
1
+ import assert from 'node:assert';
2
+ import { createWriteStream, createReadStream } from 'node:fs';
3
+ import fs from 'node:fs/promises';
4
+ import { pipeline } from 'node:stream/promises';
5
+ import { createGzip } from 'node:zlib';
6
+ import { debuglog } from 'node:util';
7
+ import { exists } from 'utility';
8
+ const debug = debuglog('egg/logrotator/lib/rotator');
9
+ export class LogRotator {
10
+ options;
11
+ app;
12
+ logger;
13
+ constructor(options) {
14
+ this.options = options;
15
+ assert(this.options.app, 'options.app is required');
16
+ this.app = this.options.app;
17
+ this.logger = this.app.coreLogger;
18
+ }
19
+ async rotate() {
20
+ const files = await this.getRotateFiles();
21
+ assert(files instanceof Map, 'getRotateFiles should return a Map');
22
+ const rotatedFiles = [];
23
+ for (const file of files.values()) {
24
+ try {
25
+ debug('rename from %s to %s', file.srcPath, file.targetPath);
26
+ await renameOrDelete(file.srcPath, file.targetPath, this.app.config.logrotator.gzip);
27
+ rotatedFiles.push(`${file.srcPath} -> ${file.targetPath}`);
28
+ }
29
+ catch (e) {
30
+ const err = e;
31
+ err.message = `[@eggjs/logrotator] rename ${file.srcPath}, found exception: ${err.message}`;
32
+ this.logger.error(err);
33
+ }
34
+ }
35
+ if (rotatedFiles.length > 0) {
36
+ // tell every one to reload logger
37
+ debug('broadcast log-reload, rotated files: %j', rotatedFiles);
38
+ this.logger.info('[@eggjs/logrotator] broadcast log-reload');
39
+ this.app.messenger.sendToApp('log-reload');
40
+ this.app.messenger.sendToAgent('log-reload');
41
+ }
42
+ this.logger.info('[@eggjs/logrotator] rotate files success by %s, files %j', this.constructor.name, rotatedFiles);
43
+ }
44
+ }
45
+ // rename from srcPath to targetPath, for example foo.log.1 > foo.log.2
46
+ // if gzip is true, then use gzip to compress the file, and delete the src file, for example foo.log.1 -> foo.log.2.gz
43
47
  async function renameOrDelete(srcPath, targetPath, gzip) {
44
- if (srcPath === targetPath) return;
45
- if (!await exists(srcPath)) return;
46
- if (await exists(targetPath)) throw /* @__PURE__ */ new Error(`targetFile ${targetPath} exists!!!`);
47
- if (gzip === true) {
48
- const tmpPath = `${targetPath}.tmp`;
49
- await fs.rename(srcPath, tmpPath);
50
- await pipeline(createReadStream(tmpPath), createGzip(), createWriteStream(targetPath));
51
- await fs.unlink(tmpPath);
52
- } else await fs.rename(srcPath, targetPath);
48
+ if (srcPath === targetPath) {
49
+ return;
50
+ }
51
+ const srcExists = await exists(srcPath);
52
+ if (!srcExists) {
53
+ return;
54
+ }
55
+ const targetExists = await exists(targetPath);
56
+ // if target file exists, then throw
57
+ // because the target file always be renamed first.
58
+ if (targetExists) {
59
+ const err = new Error(`targetFile ${targetPath} exists!!!`);
60
+ throw err;
61
+ }
62
+ // if gzip is true, then use gzip
63
+ if (gzip === true) {
64
+ const tmpPath = `${targetPath}.tmp`;
65
+ await fs.rename(srcPath, tmpPath);
66
+ await pipeline(createReadStream(tmpPath), createGzip(), createWriteStream(targetPath));
67
+ await fs.unlink(tmpPath);
68
+ }
69
+ else {
70
+ await fs.rename(srcPath, targetPath);
71
+ }
53
72
  }
54
-
55
- //#endregion
56
- export { LogRotator };
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcm90YXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdqQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQVdyRCxNQUFNLE9BQWdCLFVBQVU7SUFDWCxPQUFPLENBQWlCO0lBQ3hCLEdBQUcsQ0FBYztJQUNqQixNQUFNLENBQTRCO0lBRXJELFlBQVksT0FBdUI7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFJRCxLQUFLLENBQUMsTUFBTTtRQUNWLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxLQUFLLFlBQVksR0FBRyxFQUFFLG9DQUFvQyxDQUFDLENBQUM7UUFDbkUsTUFBTSxZQUFZLEdBQWEsRUFB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
@@ -1,9 +1,5 @@
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;
1
+ import { LogRotator, type RotateFile } from './rotator.ts';
2
+ export declare class SizeRotator extends LogRotator {
3
+ getRotateFiles(): Promise<Map<string, RotateFile>>;
4
+ _setFile(logPath: string, files: Map<string, RotateFile>): void;
7
5
  }
8
- //#endregion
9
- export { SizeRotator };
@@ -1,61 +1,67 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { debuglog } from 'node:util';
4
+ import { exists } from 'utility';
1
5
  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 };
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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
@@ -1,12 +1,10 @@
1
- //#region src/lib/utils.d.ts
2
1
  interface LoggerTransport {
3
- options: {
4
- file: string;
5
- };
2
+ options: {
3
+ file: string;
4
+ };
6
5
  }
7
6
  /**
8
7
  * Walk all logger files from loggers
9
8
  */
10
- declare function walkLoggerFile(loggers: Record<string, Map<string, LoggerTransport>>): string[];
11
- //#endregion
12
- export { walkLoggerFile };
9
+ export declare function walkLoggerFile(loggers: Record<string, Map<string, LoggerTransport>>): string[];
10
+ export {};