15815213711
2024-08-26 67b8b6731811983447e053d4396b3708c14dfe3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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;
    }
  },  
};