EMFILE:打开太多文件,打开BUNYAN或WINSTON

时间:2016-06-14 09:00:49

标签: node.js winston bunyan

我使用Bunyan然后我尝试Winston我得到的结果与

相同
  

EMFILE:打开文件太多,打开

所以我明白我做错了什么。我试图测试的是

var winston = require('winston');

setInterval(function(){

var logger1 = new (winston.Logger)({
       level: 'info',
    transports: [
      new (winston.transports.Console)({ level: 'error' }),
      new (winston.transports.File)({ filename: './logs/1.log', level: 'error' })
    ]
});

var logger2 = new (winston.Logger)({
       level: 'info',
    transports: [
      new (winston.transports.Console)({ level: 'error' }),
      new (winston.transports.File)({ filename: './logs/2.log', level: 'error' })
    ]
});

logger1.error('Hello logs1');
logger2.error('Hello logs2');

}, 50);

注意:这只是一个测试。我将logger创建在setInterval中进行测试。如何使它工作?

我想要的是

Create logger1
Dispose logger1
Create logger2
Dispose logger2
Create logger1
Dispose logger1
Create logger1
Dispose logger1

...

我认为现在是什么

Create logger1
Create logger2
Create logger1
Create logger2
Create logger1
Create logger2

...

1 个答案:

答案 0 :(得分:0)

EMFILE:打开的文件过多(使用Winston v3.2.1)

创建Winston实例时,它将打开文件,并且永远不会 关闭它,直到记录器实例存在。 Close()函数的作用就像 冠军。我们需要使用 close()函数删除Winston实例。

each[0] in df.index.levels[2]

在这种情况下,您需要在代码中包括两行。

   logger.close();