【问题标题】:Node.js, logging with Pino: warning 'Possible EventEmitter memory leak detected'Node.js,使用 Pino 进行日志记录:警告“检测到可能的 EventEmitter 内存泄漏”
【发布时间】:2022-08-03 20:00:11
【问题描述】:

要在我的项目中注册任何事件,我使用 pino。这是我的 \'Logger.js\' 文件:

require(\'dotenv\').config();
const pino = require(\'pino\');

const logger = (
  name, 
  level = (process.env.LOG_LEVEL || \'info\'),
  file = process.env.LOG_FILE || \'./log.log\',
) => pino({
  name,
  level,
  transport:
  {
    targets: [
      { // то screen
        target: \'pino-pretty\',
        level,
        options:
        {
          colorize: true,
          translateTime: true,
          sync: true,
        },
      },
      { // то file
        target: \'pino-pretty\',
        level,
        options:
        {
          colorize: false,
          translateTime: true,
          sync: true,
          destination: file,
        },
      },
    ],
  },
});

module.exports = logger;

然后我在任何课程中使用这个记录器。比如像这个类:

const logger = require(\'./Logger\')(\'User\');

class testClass1 {
  constructor(a) {
    this.a = a;
  }

  async increase(x) {
    logger.debug(`x=${x}`);
    this.a += x;
    return this.a
  }
}

module.exports = testClass1;

类可以在项目文件中使用,例如:

const testClass1 = require(\'./testClass1\');

async function test() {
  const test1 = new testClass1(2);
  test1.increase(2);
}

test();

一切正常。但是如果使用 logger 的类的数量超过 10,我有一个警告:检测到可能的 EventEmitter 内存泄漏.

可以做些什么来避免这种情况? 也许有一些关于如何保存日志的建议?

    标签: node.js memory-leaks pinojs


    【解决方案1】:

    您的 logger.js 文件导出了一个创建新记录器的函数。

    我会尝试只创建一个记录器,如果需要,我会创建 child loggers 用于您拥有的 User.js 文件之类的用途

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多