AppLogger.js 1.1 KB

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