尝试创建自定义记录器时,为什么会出现“超出最大调用堆栈大小”错误(Winston / NodeJS)

时间:2012-11-08 19:13:16

标签: node.js stack-overflow winston

我正在尝试通过创建具有自定义级别的记录器来了解如何使用Winston(NodeJS)。

logger.js

  var winston = require('winston');

  var custom = {
    levels: {
      debug: 0,
      log  : 1,
      info : 2,
      ok   : 3,
      warn : 4,
      cry  : 5,
      fail : 6
    },
    colors: {
      debug: 'grey',
      log  : 'white',
      info : 'cyan',
      ok   : 'green',
      yay  : 'blue',
      warn : 'yellow',
      cry  : 'magenta',
      fail : 'red'
    }
  };

  var customLogger = new (winston.Logger)({
      transports: [
          new (winston.transports.Console)({ colorize:true, prettyPrint: true, level: 'fail', timestamp:false })
      ],
      levels:custom.levels, colors:custom.colors
  });

module.exports = customLogger;

// in includes.js

var logger = require('./lib/logger.js');
exports.logger = logger;

//在app.js

var logger = require('includes').logger
logger.cry("Wah Wah Wah");

但每当我尝试包含我的自定义记录器并使用它时,我得到:

 RangeError: Maximum call stack size exceeded

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

立即想到的一件事是直接在app.js中包含logger.js而不是通过includes.js。

我很乐意提供更多帮助,但是对于那些位置的文件,没有其他任何内容可以继续,但你所说的,就我可以告诉你的应用程序根本不应该工作。