123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 'use strict';
- const moment = require('moment');
- const fs = require('mz/fs');
- const path = require('path');
- const debug = require('debug')('egg-logrotator:hour_rotator');
- const Rotator = require('./rotator');
- // rotate log by hour
- // rename from foo.log to foo.log.YYYY-MM-DD-HH
- class DayRotator extends Rotator {
- async getRotateFiles() {
- const files = new Map();
- const logDir = this.app.config.logger.dir;
- const filesRotateByHour = this.app.config.logrotator.filesRotateByHour || [];
- for (let logPath of filesRotateByHour) {
- // support relative path
- if (!path.isAbsolute(logPath)) logPath = path.join(logDir, logPath);
- const exists = await fs.exists(logPath);
- if (!exists) {
- continue;
- }
- this._setFile(logPath, files);
- }
- return files;
- }
- get hourDelimiter() {
- return this.app.config.logrotator.hourDelimiter;
- }
- _setFile(srcPath, files) {
- if (!files.has(srcPath)) {
- const targetPath = srcPath + moment().subtract(1, 'hours').format(`.YYYY-MM-DD${this.hourDelimiter}HH`);
- debug('set file %s => %s', srcPath, targetPath);
- files.set(srcPath, { srcPath, targetPath });
- }
- }
- }
- module.exports = DayRotator;
|