const Loggers = require('egg-logger').EggLoggers; const assert = require('assert'); const dayjs = require('dayjs'); const path = require('path'); const Ps = require('../ps'); const Conf = require('../config'); const ConfigCache = require('../config/cache'); let LogDate = 0; module.exports = { /** * 创建 */ create(config = {}) { let opt = {}; if (Object.keys(config).length == 0) { const defaultConfig = { logger: { type: 'application', dir: Ps.getLogDir(), encoding: 'utf8', env: Ps.env(), level: 'INFO', consoleLevel: 'INFO', disableConsoleAfterReady: !Ps.isDev(), outputJSON: false, buffer: true, appLogName: `ee.log`, coreLogName: 'ee-core.log', agentLogName: 'ee-agent.log', errorLogName: `ee-error.log`, coreLogger: {}, allowDebugAtProd: false, enablePerformanceTimer: false, rotator: 'none', }, customLogger: {} } // 先从 cache 中读配置且不能抛出错误,如果没有从文件中读(子进程无法获取 cache) let sysConfig = ConfigCache.all(false); if (!sysConfig) { sysConfig = Conf.all(false); } opt = Object.assign(defaultConfig, { logger: sysConfig.logger, customLogger: sysConfig.customLogger || {} }); } else { opt.logger = config.logger; opt.customLogger = config.customLogger; } // console.log('log---------', opt); assert(Object.keys(opt).length != 0, `logger config is null`); let rotateType = opt.logger.rotator; if (rotateType == 'day') { this._rotateByDay(opt); } const loggers = new Loggers(opt); return loggers; }, /** * 按天分割 */ _rotateByDay(logOpt) { let now = parseInt(dayjs().format('YYYYMMDD')); if (LogDate != now) { LogDate = now; let appLogName = logOpt.logger.appLogName; let coreLogName = logOpt.logger.coreLogName; let errorLogName = logOpt.logger.errorLogName; let appLogExtname = path.extname(appLogName); let coreLogExtname = path.extname(coreLogName); let errorLogExtname = path.extname(errorLogName); logOpt.logger.appLogName = path.basename(appLogName, appLogExtname) + '-' + now + appLogExtname; logOpt.logger.coreLogName = path.basename(coreLogName, coreLogExtname) + '-' + now + coreLogExtname; logOpt.logger.errorLogName = path.basename(errorLogName, errorLogExtname) + '-' + now + errorLogExtname; } }, };