@eggjs/logrotator
Version:
logrotator for egg
91 lines • 7.59 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DayRotator = void 0;
const node_path_1 = __importDefault(require("node:path"));
const moment_1 = __importDefault(require("moment"));
const promises_1 = __importDefault(require("node:fs/promises"));
const node_util_1 = require("node:util");
const utility_1 = require("utility");
const rotator_js_1 = require("./rotator.js");
const utils_js_1 = require("./utils.js");
const debug = (0, node_util_1.debuglog)('@eggjs/logrotator/lib/day_rotator');
// rotate log by day
// rename from foo.log to foo.log.YYYY-MM-DD
class DayRotator extends rotator_js_1.LogRotator {
filesRotateBySize;
filesRotateByHour;
constructor(options) {
super(options);
this.filesRotateBySize = this.app.config.logrotator.filesRotateBySize || [];
this.filesRotateByHour = this.app.config.logrotator.filesRotateByHour || [];
}
async getRotateFiles() {
const files = new Map();
const logDir = this.app.config.logger.dir;
const loggers = this.app.loggers;
const loggerFiles = (0, utils_js_1.walkLoggerFile)(loggers);
for (let file of loggerFiles) {
// support relative path
if (!node_path_1.default.isAbsolute(file)) {
file = node_path_1.default.join(logDir, file);
}
this._setFile(file, files);
}
// Should rotate agent log, because schedule is running under app worker,
// agent log is the only difference between app worker and agent worker.
// - app worker -> egg-web.log
// - agent worker -> egg-agent.log
const agentLogName = this.app.config.logger.agentLogName;
this._setFile(node_path_1.default.join(logDir, agentLogName), files);
// rotateLogDirs is deprecated
const rotateLogDirs = this.app.config.logger.rotateLogDirs;
if (rotateLogDirs && rotateLogDirs.length > 0) {
this.app.deprecate('[egg-logrotator] Do not use app.config.logger.rotateLogDirs, only rotate core loggers and custom loggers');
for (const dir of rotateLogDirs) {
const stat = await (0, utility_1.exists)(dir);
if (!stat)
continue;
try {
const names = await promises_1.default.readdir(dir);
for (const name of names) {
if (!name.endsWith('.log')) {
continue;
}
this._setFile(node_path_1.default.join(dir, name), files);
}
}
catch (err) {
this.logger.error(err);
}
}
}
return files;
}
_setFile(srcPath, files) {
// don't rotate logPath in filesRotateBySize
if (this.filesRotateBySize.includes(srcPath)) {
return;
}
// don't rotate logPath in filesRotateByHour
if (this.filesRotateByHour.includes(srcPath)) {
return;
}
if (!files.has(srcPath)) {
const ext = this.app.config.logrotator.gzip === true ? '.gz' : '';
// allow 2 minutes deviation
const targetPath = srcPath +
(0, moment_1.default)()
.subtract(23, 'hours')
.subtract(58, 'minutes')
.format('.YYYY-MM-DD') +
ext;
debug('set file %s => %s', srcPath, targetPath);
files.set(srcPath, { srcPath, targetPath });
}
}
}
exports.DayRotator = DayRotator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5X3JvdGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2RheV9yb3RhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUE2QjtBQUM3QixvREFBNEI7QUFDNUIsZ0VBQWtDO0FBQ2xDLHlDQUFxQztBQUVyQyxxQ0FBaUM7QUFFakMsNkNBQWdGO0FBQ2hGLHlDQUE0QztBQUU1QyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsbUNBQW1DLENBQUMsQ0FBQztBQUU1RCxvQkFBb0I7QUFDcEIsNENBQTRDO0FBQzVDLE1BQWEsVUFBVyxTQUFRLHVCQUFVO0lBQ2hDLGlCQUFpQixDQUFXO0lBQzVCLGlCQUFpQixDQUFXO0lBRXBDLFlBQVksT0FBdUI7UUFDakMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDNUUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7SUFDOUUsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBQSx5QkFBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLEtBQUssSUFBSSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7WUFDN0Isd0JBQXdCO1lBQ3hCLElBQUks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