AppLogger.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const fs = require('fs-extra');
  2. const Logger = require('./Logger');
  3. const configManager = new (require('../config'))();//singleton
  4. let instance = null;
  5. //singleton
  6. class AppLogger {
  7. constructor() {
  8. if (!instance) {
  9. instance = this;
  10. }
  11. this.inited = false;
  12. return instance;
  13. }
  14. async init() {
  15. if (this.inited)
  16. throw new Error('already inited');
  17. let config = configManager.config;
  18. let loggerParams = null;
  19. if (config.loggingEnabled) {
  20. await fs.ensureDir(config.logDir);
  21. loggerParams = [
  22. {log: 'ConsoleLog'},
  23. {log: 'FileLog', fileName: `${config.logDir}/${config.name}.log`},
  24. ];
  25. }
  26. this._logger = new Logger(loggerParams);
  27. this.inited = true;
  28. return this.logger;
  29. }
  30. get logger() {
  31. if (!this.inited)
  32. throw new Error('not inited');
  33. return this._logger;
  34. }
  35. get log() {
  36. const l = this.logger;
  37. return l.log.bind(l);
  38. }
  39. }
  40. module.exports = AppLogger;